Skip to main content
 首页 » 编程设计

python之python re中的可能错误

2025年05月04日12langtianya

我有以下代码:

import re 
r = re.compile(r'[*-/]') 
print r.match('.') is not None 

它打印 True,表示 '.' 匹配给定的正则表达式,但它不匹配。我是否遗漏了正则表达式中明显的内容?

我在 osx 10.8.2 上使用 cpython 2.7.3

如果 [] 集中的三个字符中的任何一个被删除,它都有效。

请您参考如下方法:

当您编写以下内容时,

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