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

标签 python regex

我在 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/

相关文章:

python - 如何升级到最新的Anaconda 5.0.1

python - 带有pd.grouper和Margins的Pivos Pivot_table

python - 从 Python3.3 中的字符串中删除除字母和空格之外的所有内容

python - 查找列表中包含的字符的位置

python - 如何在 Django 的选择和单选输入中删除未选择的项目

出于某种奇怪的原因检查 svg HTML 标签的 javascript RegExp 正在测试 "img"的 true 这是怎么发生的?

javascript - 我将使用什么正则表达式来查找单词 "oy"?

java - 正则表达式获取一个或两个分隔符之间的字符串

javascript - 如何将 JSON 键用作正则表达式?

javascript - 如何在 Braintree JS 安全自定义表单中发布 "amount"变量?