获取大写单词的前一行和后一行

Get Preceding Line & Following Line for an UPPERCASEWORD

字符串 S 看起来像这样:

S = "HOLY CROWS \n This looks scary. \n Horror score rises. \n MAYBE I should ask \n Whosebug \n They would know."

期望的输出:

"I should ask Whosebug They would know."

基本上:

查找包含包含在以下条件中的单个大写单词的每个匹配项:

这是我目前的情况:

\w\n\w[A-Z]+\n.*?\w

但这并不能征服单词前后的完整行。 它也不满足第二个要求。

当前输出:

"k Whosebug T"

您可以使用以下正则表达式:

(?:^|\r?\n)(.*?)\r?\n([A-Z]+)r?\n(.*?)(?:\r?\n|$)

并获得以下组:

  

这将匹配任何大写单词,前后直接换行。第一个换行符之前和最后一个换行符之后的所有内容都将在组内。

  • (?:) 匹配一个没有编号的组(如 </code>、<code>
  • .*? 延迟匹配 0 个或多个字符 (non-greedy)
  • \r?\n 匹配 Windows \r\n 和 UNIX \n 换行符
  • ^$ 字符串的开始和结束

这里是live example.