在python 3.2.2中,当我尝试在正则表达式模式中使用*时,我遇到了奇怪的错误.当*stads之后/ all都没问题.但是当我尝试从模式中删除/时,此代码会出现错误:sre_constants.error:字符范围错误
import re
foo = re.search("[^123+-/*]", "123+-/*w")
if foo:
print("foo")
else:
print("doo")
Run Code Online (Sandbox Code Playgroud)
在python文档中,我发现使用*是可以接受的,没有任何反斜杠或其他东西.但是像这样的代码的问题仍然存在.
你的问题不是*,它是连字符 - 表示字符类中的范围,在这种情况下是+和/(+,-./)之间的所有字符.出现无效的范围,因为*来自前 /.
如果要在字符类中包含文字连字符,则必须将其转义或将其放在最后或开始:
[^123+/*-]
Run Code Online (Sandbox Code Playgroud)