在python正则表达式中使用*

anz*_*ome 4 regex python-3.x

在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文档中,我发现使用*是可以接受的,没有任何反斜杠或其他东西.但是像这样的代码的问题仍然存在.

Joe*_*oey 5

你的问题不是*,它是连字符 - 表示字符类中的范围,在这种情况下是+/(+,-./)之间的所有字符.出现无效的范围,因为*来自 /.

如果要在字符类中包含文字连字符,则必须将其转义或将其放在最后或开始:

[^123+/*-]
Run Code Online (Sandbox Code Playgroud)