获取大写单词的前一行和后一行
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."
基本上:
查找包含包含在以下条件中的单个大写单词的每个匹配项:
- 获取 UPPERCASEWORD 之后的字符串,直到换行符。
- 获取 UPPERCASEWORD 之前的字符串,直到遇到 ANOTHERUPPERCASEWORD,当且仅当在两者之间没有发现换行符。
这是我目前的情况:
\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.
字符串 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."
基本上:
查找包含包含在以下条件中的单个大写单词的每个匹配项:
- 获取 UPPERCASEWORD 之后的字符串,直到换行符。
- 获取 UPPERCASEWORD 之前的字符串,直到遇到 ANOTHERUPPERCASEWORD,当且仅当在两者之间没有发现换行符。
这是我目前的情况:
\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.