在破折号后使用逗号而不是反转时,正则表达式中的"字符范围错误"

Zei*_*zar 4 python regex python-2.7

我在python控制台中尝试过这个命令:

re.match('^\<.+\>([\w\s-,]+)\<.+\>$', 'Carrier-A')
Run Code Online (Sandbox Code Playgroud)

我得到了:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/re.py", line 141, in match
    return _compile(pattern, flags).match(string)
  File "/usr/lib/python2.7/re.py", line 251, in _compile
    raise error, v # invalid expression
sre_constants.error: bad character range
Run Code Online (Sandbox Code Playgroud)

但是当我使用时:

re.match('^\<.+\>([\w\s,-]+)\<.+\>$', 'Carrier-A')
Run Code Online (Sandbox Code Playgroud)

没有错误返回.

关于字符序列我应该考虑什么?

DYZ*_*DYZ 8

-在方括号内使用时,破折号[]具有特殊含义:它定义了一系列字符.例如,[\s-,]是指"从任何字符\s,"(这是不可能的).但是,如果破折号是方括号中的第一个或最后一个字符,则它没有特殊含义.这就是你的第二个正则表达式是正确的原因.