gpt4 book ai didi

python - 在 python 正则表达式中,为什么 (h)* 和 (h)+ 不能产生相同的结果?

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

我正在学习 python 中的 re 模块。我发现了一些(对我来说)没有意义的东西,我也不知道为什么。这是一个小例子,

x=re.compile(r'(ha)*')
c=x.search('the man know how to hahahaha')
print(c.group())#output will be nothing,no error.But i expect "hahahaha"

如果我使用 re.compile(r'(ha)?'),也会发生同样的情况,

x=re.compile(r'(ha)?')
c=x.search('the man know how to hahahaha')
print(c.group())#output will be nothing,no error.But i expect "ha".

但是如果我使用re.compile(r'(ha)+')

x=re.compile(r'(ha)+')
c=x.search('the man know how to hahahaha')
print(c.group())#output will be `hahahaha`,just as expected.

为什么,re.compile(r'(ha)*')re.compile(r'(ha)+') 不一样在这种情况下?

最佳答案

模式 r'h+'r'h*' 不相同,这就是为什么它们不提供相同的结果。 + 表示您的模式有 1 个或多个匹配项,* 零个或多个:

re.search 返回“无”,因为它只查看第一个 匹配项。 *first 匹配是字符串首字母处的 '(ha)' 模式零次出现:

import re
x=re.compile(r'(ha)*')
c=x.findall('the man know how to hahahaha') # get _all_ matches
print(c)

输出:

['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'ha', '']

# t h e m a n k n o w h o w t o hahahaha

*? 量词允许 0 次匹配

独库:

Pattern.search(string[, pos[, endpos]])
Scan through string looking for the first location where this regular expression produces a match, ...
(source: https://docs.python.org/3/library/re.html#re.Pattern.search)

关于python - 在 python 正则表达式中,为什么 (h)* 和 (h)+ 不能产生相同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55504331/

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