Python中的正则表达式:search()与findall()for(\w)+

2024-10-01 15:43:35 发布

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

我创建了一个正则表达式,如下所示:

agentRegex = re.compile(r'Agent (\w)+')

然后我执行^{cd1>}操作,如下所示:

^{pr2}$

我得到^{cd2>}作为输出。

但是当我执行^{cd3>}操作时:

^{pr3}$

输出量为^{cd4>}。

输出不是应该是^{cd5>}?


Tags: reagentcompilecd1cd2pr2cd5cd3
3条回答

你也可以这样做:

import re
agentRegex = re.compile(r'Agent\s+[^\s]+')
print agentRegex.findall('Agent Alice told Agent Carol that Agent Eve knew Agent Bob was a double agent.') 
# ['Agent Alice', 'Agent Carol', 'Agent Eve', 'Agent Bob']

re.findall()默认情况下输出捕获组的列表,在您的例子中是(\w+)。在

清除捕获的组:

Agent \w+

示例:

^{pr2}$

您的正则表达式:

'Agent (\w)+'

它将继续匹配并捕获'Agent '之后的单个\w个字符,并继续用下一个匹配覆盖匹配的组。这就是你得到['e', 'l', 'e', 'b']的方法,这是['Alice', 'Carol', 'Eve', 'Bob']的最后一个字符

您在.search().group()中得到了正确的答案,因为group()默认为group(0),其中包含匹配的所有内容,但是如果您这样做,.search().group(1),您将得到{}。在

你要找的是抓住特工以及下一个词。所以你可以试试希梅尔和迪特里希的建议。在

相关问题 更多 >

    热门问题