Python re.findall避免渴望

2024-05-28 16:52:56 发布

您现在位置:Python中文网/ 问答频道 /正文

当引擎在regex模式中找到第一个备选方案时,我遇到了一个问题,它停止分析右侧进一步的字符串位置。例如,我有以下示例:

在字符串ABC SCHOOL FOUNDATION COOPERATIVE PARTNERSHIP中,我希望将['foundation cooperative partnership']作为匹配项。但是,我得到了['foundation', 'cooperative'],因为引擎找到了foundation,然后继续使用同样匹配的单词cooperative。我正在使用以下代码:

import re

name='ABC SCHOOL FOUNDATION COOPERATIVE PARTNERSHIP'
regex='(community contribution company|foundation cooperative partnership|cooperative|foundation)(?=\s)'

found= re.findall(regex, name.lower())

print(found)

我如何让正则表达式在分析FOUNDATION之后继续使用下一个单词COOPERATIVE PARTNERSHIP,而不是在分别查找foundationcooperative时放弃

再次感谢


Tags: 字符串name引擎re单词regexabcfoundation
1条回答
网友
1楼 · 发布于 2024-05-28 16:52:56

(?=\s)更改为\b以匹配单词边界。字符串的末尾没有空格,因此当它尝试匹配整个字符串时,前瞻失败

而且几乎总是对正则表达式使用原始字符串,这样regexp转义序列就不会作为字符串转义序列处理

>>> regex=r'(community contribution company|foundation cooperative partnership|cooperative|foundation)\b'
>>> re.findall(regex, name.lower())
['foundation cooperative partnership']

相关问题 更多 >

    热门问题