如果您能帮助我构建与以下示例(但不是最后一个示例)匹配的正则表达式,我将不胜感激。
我的目标是匹配 Source 之后的单词,但这些单词应该是组织名称。这些组织名称中 99% 并非全部大写。我想避免匹配仅包含单词 SOURCE 的标签,并且这些单词通常是 n 长度的大写单词。
组织名称并非全部大写。它们可以采取任何形式,而不仅仅是“基金会”等。
匹配
SOURCE Skoll Foundation SUBJECT: --> 'Skoll Foundation'
SOURCE: Skoll Foundation; ABC Found; Institute of Humane INDUSTRY: --> ['Skoll Foundation', 'ABC Found', 'Institute of Humane']
SOURCE SKOLL Foundation --> ['SKOLL Foundation']
不匹配这些:
OPEN SOURCE SOFTWARE (89%)
SOURCE SOFTWARE ENTERPRISE
我的尝试,但我意识到这恰好与顶部示例中的“SOURCE”匹配。
pat = 'SOURCE:?\s+(?![A-Z\s]{2,20})?'
最佳答案
我相信以下正则表达式应该适合您:
\bSOURCE\b:?(?!( +[A-Z]+){2}\b)((?: +\w+){2,})
Online Regex Demo
基本上,如果该文本包含 2 个连续的全大写单词,则此正则表达式只会丢弃文字文本 SOURCE
之后的任何文本。
关于python - 如果连续 N 个单词都是大写,则不匹配的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24725498/