gpt4 book ai didi

Python正则表达式避免匹配单词后跟多个条件

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:50 25 4
gpt4 key购买 nike

我想使用 Python 3 匹配句子中间的大写字符单词。这是我当前的正则表达式:

.+?\b([A-Z]+)\b(?=[^.!?][^ ])

所以我想避免匹配后跟这组字符 [^.!?] 空格的单词。但此表达式也匹配后跟句点且没有 空格的单词。我的错误是什么?

即,目前我使用 re.findall() withwithout 末尾的空格得到相同的结果搜索字符串:

>>> re.findall(r'.+?\b([A-Z]+)\b(?=[^.!?][^ ])','NO YES YES YES YES NO. ')
['YES', 'YES', 'YES', 'YES']
>>> re.findall(r'.+?\b([A-Z]+)\b(?=[^.!?][^ ])','NO YES YES YES YES NO.')
['YES', 'YES', 'YES', 'YES']

最佳答案

负前瞻试试这个正则表达式:

r'(?!^)\b([A-Z]+)\b(?![.!?] )'

(?!^) 将跳过句子开头的单词。

(?![.!?] ) 当单词后跟其中一个字符后跟一个空格时,匹配将失败。

示例:

>>> re.findall(r'(?!^)\b([A-Z]+)\b(?![.!?] )','NO YES YES YES YES NO.')
['YES', 'YES', 'YES', 'YES', 'NO']

>>> re.findall(r'(?!^)\b([A-Z]+)\b(?![.!?] )','NO YES YES YES YES NO. ')
['YES', 'YES', 'YES', 'YES']

关于Python正则表达式避免匹配单词后跟多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950627/

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