我有以下代码:
import re
r = re.compile(r'[*-/]')
print r.match('.') is not None
它输出
True
,表示'.'
匹配给定的正则表达式,但不匹配。我在正则表达式中缺少明显的东西吗?我在osx
2.7.3
上使用cpython 10.8.2
如果删除了
[]
集内的三个字符中的任何一个,则它将起作用。 最佳答案
当您编写以下内容时,
r = re.compile(r'[*-/]')
-
的使用实际上意味着匹配*
和/
之间的任何字符。如果您查看ascii表,* 42
+ 43
, 44
- 45
. 46
/ 47
这就是为什么它与
.
字符匹配的原因。您当前的正则表达式也将匹配,>>> print r.match('+')
<_sre.SRE_Match object at 0x100483370>
>>> print r.match(',')
<_sre.SRE_Match object at 0x100483370>
要纠正正则表达式,使其仅匹配
*
或-
或/
,可以像这样转义-
,r = re.compile(r'[*\-/]')
这样您就找不到
.
的匹配项>>> print r.match('.') is not None
False
关于python - python re中可能的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15992879/