gpt4 book ai didi

python - 如何使用 re.findall 查找不全是大写字母的单词?

转载 作者:行者123 更新时间:2023-11-30 22:04:22 27 4
gpt4 key购买 nike

例如,我有 s="我真的不想谈论它,一点也不想!"

我想要re.findall(reg, s)返回“我”“不想”“想要”“谈论”“关于”“它”“,”“不”“在”“所有”“!”

到目前为止,我得到了reg=r'[^\w\s]+|\w+|\n',它无法过滤掉单词“REALLY”

谢谢

最佳答案

\w+ 模式匹配 1 个或多个任意单词字符,包括全部大写的单词。

请注意,代词 I 也是全大写。因此,假设您想跳过 2 个或更多字母的所有大写单词,您可以考虑将当前模式修复为

r'[^\w\s]+|\b(?![A-Z]{2,}\b)\w+|\n'

请参阅regex demo

\b(?![A-Z]{2,}\b)\w+ 模式匹配

  • \b - 字边界
  • (?![A-Z]{2,}\b) - 如果紧邻当前位置的右侧有 2 个或更多 ASCII 大写字母,则匹配失败的负向预测后跟单词边界
  • \w+ - 1 个或多个单词字符(如果您只想匹配字母,请替换为 [^\W\d_]+)。

要支持所有 Unicode 大写字母,您可以使用 PyPi 正则表达式 r'[^\w\s]+|\b(?!\p{Lu}{2,}\b)\w+|\n' 模式,或使用 pLu = '[{}]'.format("".join([chr(i) for i in range(sys.maxunicode) if chr( i).isupper()])) (Python 3) 或 pLu = u'[{}]'.format(u"".join([unichr(i) for i in xrange(sys) .maxunicode) if unichr(i).isupper()])) (Python 2)。请参阅Python regex for unicode capitalized words 。注意我建议坚持使用最新的 Python 版本或最新的 PyPi 正则表达式模块。

关于python - 如何使用 re.findall 查找不全是大写字母的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53318896/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com