python-3.x - 正则表达式 - 计算单词中大写字母的数量
问题描述
我想查找文本中包含多个大写字母的所有单词。到目前为止,我只检查最后一个字符是否为大写
\b.*[A-Z]\b
但如果我的条件是单词中的最后一个字母或总共两个字符是大写的,那会更精确。
解决方案
您可以使用
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 演示。
推荐阅读
- python - 从 django 修剪下载的 pdf 文件
- c++ - C++ 多线程:如何为许多“工作”重用线程?
- java - 我将如何尝试捕获异常?
- javascript - 我是编程和 javascript 方面的新手,所以请帮我处理循环
- lazarus - 从浮点数中获取整数
- python - 使用 Selenium API,但现在 Vscode 不运行浏览器而是运行 python 控制台?
- widget - 在 CKEditor 中,如何在编辑器失去焦点并重新获得焦点后重新选择不可编辑的小部件?
- arrays - 必填图像字段显示模型状态错误
- javascript - 如何在 Angular 中将 async/await 方法编写为 Observable?
- typescript - 如何将固定类型值分配给部分通用约束类型?