python re中可能存在的错误

python re中可能存在的错误,python,regex,Python,Regex,我有以下代码: import re r = re.compile(r'[*-/]') print r.match('.') is not None 它打印True,表示“.”与给定的正则表达式匹配,而它不匹配。我是不是在正则表达式中遗漏了一些明显的东西 我正在osx 10.8.2上使用cpython 2.7.3 如果[]集中的三个字符中的任何一个被删除,它就可以工作。使用re.DEBUG编译它 它给出了范围的定义。男人 其中包括一个。因此完全合法。使用re.DEBUG编译它 它给出了范围的定义

我有以下代码:

import re
r = re.compile(r'[*-/]')
print r.match('.') is not None
它打印True,表示“.”与给定的正则表达式匹配,而它不匹配。我是不是在正则表达式中遗漏了一些明显的东西

我正在osx 10.8.2上使用cpython 2.7.3

如果[]集中的三个字符中的任何一个被删除,它就可以工作。

使用re.DEBUG编译它

它给出了范围的定义。男人

其中包括一个。因此完全合法。

使用re.DEBUG编译它

它给出了范围的定义。男人


其中包括一个。因此完全合法。

当你写以下内容时

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'[*-/]')
使用-实际上意味着匹配*和/之间的任何字符。如果您查看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>
那你就找不到匹配的


特殊字符在集合中失去了意义:特殊字符在集合中失去了意义:你也可以把-last:r'[*/-]'放在那些一旦被指出就显而易见的地方。谢谢你也可以把-last:r'[*/-]'放在那些一旦被指出就显而易见的地方。谢谢
>>> print r.match('.') is not None
False