非常感谢所有回答此问题第1部分的人,请参阅here
对我有用的正则表达式是
(?<![A-Z]\s)\b[A-Z]+\b(?!\s[A-Z])
现在的问题是如何做反向,即给定字符串
这是一个不同的句子,这里有几个资本词,并且有多个线路。
如何匹配“ CAPITAL WORDS ”和“并且交叉”,但不匹配“ WITH ”或“ LINES < / strong>“因为它们被左侧的小写单词隔离,或者它们可能位于句子开头的末尾。
我尝试从负面改为正面,并将[A-Z]改为[a-z],但又失败了
任何帮助都会再次受到赞赏。
答案 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']