为什么关于“*”模式的简单正则表达式不起作用?

2024-10-01 04:47:03 发布

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

代码如下

str="baaaacbd"
pattern = re.compile(r"a*")
mat = pattern.search(str)
print mat.group()

输出什么都不是!真烦人!为什么?你知道吗


Tags: 代码researchgrouppatternprintcompilemat
1条回答
网友
1楼 · 发布于 2024-10-01 04:47:03

首先,不要使用python内置类型名作为变量名。其次,a*表示匹配字符a的0个或多个,re.search()将返回模式的第一个匹配项,即0个匹配项。您可以使用groups()查看所有匹配项:

In [34]: pattern = re.compile(r"(a*)")

In [35]: mat = pattern.search(s)

In [36]: print(mat.group())

In [37]: print(mat.groups())
('',)

或者使用a+匹配一个或多个字符,在本例中,这是您想要的:

In [38]: pattern = re.compile(r"a+")

In [39]: mat = pattern.search(s)

In [41]: print(mat.group())
aaaa

相关问题 更多 >