首页 > 解决方案 > 正则表达式 - 计算单词中大写字母的数量

问题描述

我想查找文本中包含多个大写字母的所有单词。到目前为止,我只检查最后一个字符是否为大写

\b.*[A-Z]\b

但如果我的条件是单词中的最后一个字母或总共两个字符是大写的,那会更精确。

标签: python-3.xregex

解决方案


您可以使用

re.findall(r'\b(?:[a-z]*[A-Z]){2}[a-zA-Z]*\b', text)

请参阅正则表达式演示详情

  • \b- 单词边界
  • (?:[a-z]*[A-Z]){2}- 两个零个或多个小写字母后跟一个大写字母的序列
  • [a-zA-Z]*- 零个或多个 ASCII 字母
  • \b- 单词边界

请参阅Python 演示

import re
text = "A VeRy LoNG SenTence Here"
print(re.findall(r'\b(?:[a-z]*[A-Z]){2}[a-zA-Z]*\b', text))
# => ['VeRy', 'LoNG', 'SenTence']

PyPiregex可以使用完全 Unicode 感知的正则表达式(安装在您的终端/控制台中pip install regex):

import regex
text = "Да, ЭтО ОченЬ ДЛинное предложение."
print(regex.findall(r'\b(?:\p{Ll}*\p{Lu}){2}\p{L}*\b', text))
# => ['ЭтО', 'ОченЬ', 'ДЛинное']

请参阅此 Python 演示


推荐阅读