我误解了Python正则表达式吗?

时间:2014-01-16 12:48:18

标签: python regex python-2.7

所以,我找到了

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

不匹配任何东西。谁能告诉我为什么?

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

Python 2.7.2。

2 个答案:

答案 0 :(得分:4)

re.match()仅匹配字符串 的开头,就好像该模式前缀为\A锚点一样。请改用re.search()

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

答案 1 :(得分:4)

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()