正则表达式为非连续大写单词PART DEUX

时间:2013-12-12 11:25:36

标签: regex notepad++

非常感谢所有回答此问题第1部分的人,请参阅here

对我有用的正则表达式是

(?<![A-Z]\s)\b[A-Z]+\b(?!\s[A-Z])

现在的问题是如何做反向,即给定字符串

这是一个不同的句子,这里有几个资本词,并且有多个线路。

如何匹配“ CAPITAL WORDS ”和“并且交叉”,但不匹配“ WITH ”或“ LINES < / strong>“因为它们被左侧的小写单词隔离,或者它们可能位于句子开头的末尾。

我尝试从负面改为正面,并将[A-Z]改为[a-z],但又失败了

任何帮助都会再次受到赞赏。

1 个答案:

答案 0 :(得分:0)

至少两个连续的大写单词:

 [A-Z]{2,}(?:\s+[A-Z]{2,})+

 [A-Z]{2,}           # first word (At least two letters)
 (?:                 # do not capture this group
    \s+[A-Z]{2,}     #                 (whitespace and a word)
 )+                  # one or more of / 

In [52]: re.findall(r'[A-Z]{2,}(?:\s+[A-Z]{2,})+', 'CAPITAL Words This is a different sentence WITH a few CAPITAL\nWORDS here AND THERE ACROSS multiple LINES.')
Out[52]: ['CAPITAL\nWORDS', 'AND THERE ACROSS']