gpt4 book ai didi

Python:重新模块初学者

转载 作者:行者123 更新时间:2023-11-30 23:13:46 24 4
gpt4 key购买 nike

我正在学习re模块并有理解问题 re.searchre.matchdocumentation给出了一个很好的例子,所以我决定尝试一下:

>>> import re
>>> pattern = re.compile('\d*')
>>> string = "123"
>>> pattern.match(string)
<_sre.SRE_Match object; span=(0, 3), match='123'>
>>> pattern.search(string)
<_sre.SRE_Match object; span=(0, 3), match='123'>

这里没有什么意外,所以我稍微改变了字符串:

>>> string = "hello 123"
>>> pattern.match(string)
<_sre.SRE_Match object; span=(0, 0), match=''>
>>> pattern.search(string)
<_sre.SRE_Match object; span=(0, 0), match=''>

为什么最后一次调用 search 没有找到任何结果?我希望它返回类似这样的内容(非空匹配对象):

<_sre.SRE_Match object; span=(6, 9), match='123'>

最后一次调用search期间发生了什么? Python 3.4.3

最佳答案

这是你的量词! * 量词匹配零个或多个前一个原子(在本例中为数字 \d)。返回的第一个匹配项的数量为零,位置为零。

我可以证明:

>>> import re
>>> pattern = re.compile(r"\d*")
>>> string = "hello 123"
>>> pattern.match(string)
<_sre.SRE_Match object; span=(0, 0), match=''>
>>> pattern.search(string)
<_sre.SRE_Match object; span=(0, 0), match=''>
>>> pattern = re.compile(r"\d+") # + is one or more, not zero or more
>>> pattern.match(string) # no match at start of string
>>> pattern.search(string)
<_sre.SRE_Match object; span=(6, 9), match='123'>

关于Python:重新模块初学者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29128577/

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