python - 如果连续 N 个单词都是大写,则不匹配的正则表达式

标签 python regex

如果您能帮助我构建与以下示例(但不是最后一个示例)匹配的正则表达式,我将不胜感激。

我的目标是匹配 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/

相关文章:

python - 注释栏时无法更改宽度

python - 比较两个 numpy 数组的对象 ID

Python 正则表达式 : How to increase only one number in string?

java - GWT String.replace 不起作用

regex - 如何制作一个正则表达式来匹配模式之间带有随机点的字符串?

php - preg_split - 按空格和所选字符分割,但将字符保留在数组中

python - 如何从 python 对象中检索值?

python - 我需要在ubuntu上将scrapy 12升级到scrapy 16 ..你能帮我用命令吗

python - 结果后端中的 Celery + rabbitmq

C 正则表达式库代码帮助