【发布时间】:2017-04-20 15:01:02
【问题描述】:
我正在尝试在 Python 中使用正则表达式匹配所有连续的大写单词/短语。鉴于以下情况:
text = "The following words are ALL CAPS. The following word is in CAPS."
代码将返回:
ALL CAPS, CAPS
我目前正在使用:
matches = re.findall('[A-Z\s]+', text, re.DOTALL)
但这会返回:
['T', ' ', ' ', ' ', ' ALL CAPS', ' T', ' ', ' ', ' ', ' ', ' CAPS']
我显然不想要标点符号或“T”。我只想返回连续单词或仅包含所有大写字母的单个单词。
谢谢
【问题讨论】:
-
当单词没有被
ABC.DEF这样的空格分隔时,你会期待什么? -
为什么你使用
re.DOTALL这个选项,因为你的图案中没有点? -
它只是从另一个命令中复制进来的。但它不会改变输出。对正则表达式非常陌生,所以肯定不会这样做。
-
我很困惑,您的问题要求
consecutive all-caps words,但您想要的结果示例表明您只是在寻找 any 全大写单词。 -
应该更清楚——我想捕获所有大写的所有单词,但如果它们是连续的,我希望它们作为一个短语返回,而不是单个单词。