【问题标题】:Am I misunderstanding Python regex?我误解了 Python 正则表达式吗?
【发布时间】:2014-01-16 12:48:17
【问题描述】:

所以,我发现了

re.match("[^0-9.]","50-100")

不匹配任何内容。谁能告诉我为什么?

我确信- 应该指示一个字符范围,而^ 应该否定该集合。

Python 2.7.2。

【问题讨论】:

标签: python regex python-2.7


【解决方案1】:

re.match() 从字符串的开头 only 匹配,就好像该模式前面带有 \A 锚。请改用re.search()

>>> re.search("[^0-9.]","50-100")
<_sre.SRE_Match object at 0x10e2a5e00>
>>> re.search("[^0-9.]","50-100").group()
'-'

【讨论】:

  • 噢!非常感谢。
【解决方案2】:

re.match 仅匹配输入字符串的开头(与re.search 不同)

>>> import re
>>> re.match("[^0-9.]","50-100")
>>> re.search("[^0-9.]","50-100")
<_sre.SRE_Match object at 0x0000000002A28100>
>>> re.search("^[^0-9.]","50-100") # re.match("[^0-9.]","50-100") equivalent.
>>>

search() vs. match()

【讨论】:

    猜你喜欢
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2012-01-21
    • 2019-10-11
    • 1970-01-01
    相关资源
    最近更新 更多