gpt4 book ai didi

Python正则表达式;为什么搜索和匹配似乎在数字字符串中找到字母字符?

转载 作者:行者123 更新时间:2023-11-28 20:28:24 25 4
gpt4 key购买 nike

我在 Windows 总线中使用 Python 2.7 在空闲状态下运行搜索。 64 位环境。
根据 RegexBuddy 的说法,搜索模式 ('patternalphaonly') 不应产生与数字串的匹配。

我查看了“http://docs.python.org/howto/regex.html”,但没有看到任何内容可以解释为什么搜索和匹配似乎成功地找到了与模式匹配的内容。

有谁知道我做错了什么,或者误解了吗?

>>> import re
>>> numberstring = '3534543234543'
>>> patternalphaonly = re.compile('[a-zA-Z]*')
>>> result = patternalphaonly.search(numberstring)
>>> print result
<_sre.SRE_Match object at 0x02CEAD40>
>>> result = patternalphaonly.match(numberstring)
>>> print result
<_sre.SRE_Match object at 0x02CEAD40>

谢谢

最佳答案

星号运算符 (*) 表示零次或多次重复。您的字符串中英文字母的重复次数为零,因为它完全是数字,这在使用星号(重复零次)时完全有效。而是使用 + 运算符,它表示一个或多个 重复。示例:

>>> n = "3534543234543"
>>> r1 = re.compile("[a-zA-Z]*")
>>> r1.match(n)
<_sre.SRE_Match object at 0x07D85720>
>>> r2 = re.compile("[a-zA-Z]+") #using the + operator to make sure we have at least one letter
>>> r2.match(n)

Helpful link on repetition operators.

关于Python正则表达式;为什么搜索和匹配似乎在数字字符串中找到字母字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436506/

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