假设我有一个字符串:“她对主题有很好的掌握唯一的问题是英语的清晰度她对俄语和 H2O 的信心非常好”
如果观察得当,这个字符串没有任何标点符号。我主要专注于放置句点。 “她对主题的掌握非常好。唯一的问题是英语的清晰度。她对俄语和 H2O 很有信心” 我可以使用正则表达式和 findall 来获取相关单词的列表。我尝试使用类似的东西,但没有给出预期的结果。我想要一个计算效率高的代码。
import re
text = "She has an excelllent command on the topicsOnly problem is clarity in EnglishHer confidence is very good in RUSSian and H2O"
r = re.findall('([A-Z][a-z]+)|([a-zA-Z0-9]+)|([A-Z][a-z]+)', text)
最佳答案
我用 PCRE 引擎尝试了类似的东西:(\p{Ll}+)(\p{Lu}\p{Ll}*)
您可以在这里进行测试:https://regex101.com/r/tqIcdS/1
想法是使用 \p{L}
来查找任何单词字符(如 \w
),但要处理可能带有重音符号的 unicode 字符(例如: “Le pain, je l'ai mangéEnsuite j'ai bu un verre de vin”)。
\p{Ll}
匹配一个小写的 unicode 单词字符。\p{Lu}
匹配一个大写的 unicode 单词字符。
我还捕获了前后字符以匹配整个单词。
不幸的是,Python 的默认 re 库不支持它。
但感谢 Wiktor 在下面的评论,您可以使用 PyPi regex 库:https://pypi.org/project/regex/
关于python - Python findall 中的多个正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68222389/