我想查找文本中包含多个大写字母的所有单词。 到目前为止,我仅检查最后一个字符是否为大写
\b.*[A-Z]\b
但如果我的条件是单词中的最后一个字母或总共两个字符是大写的,那就更精确了。
最佳答案
你可以使用
re.findall(r'\b(?:[a-z]*[A-Z]){2}[a-zA-Z]*\b', text)
请参阅regex demo 。 详细信息:
\b
- 单词边界(?:[a-z]*[A-Z]){2}
- 两个由零个或多个小写字母组成的序列,后跟一个大写字母[a-zA-Z]*
- 零个或多个 ASCII 字母\b
- 单词边界
请参阅Python demo :
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']
使用 PyPi regex
library 可以实现完全支持 Unicode 的正则表达式(使用 pip install regex
在终端/控制台中安装):
import regex
text = "Да, ЭтО ОченЬ ДЛинное предложение."
print(regex.findall(r'\b(?:\p{Ll}*\p{Lu}){2}\p{L}*\b', text))
# => ['ЭтО', 'ОченЬ', 'ДЛинное']
参见this Python demo .
关于python-3.x - 正则表达式 - 计算单词中大写字母的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69326636/