我已经在 python 控制台中尝试过这个命令:
re.match('^\<.+\>([\w\s-,]+)\<.+\>$', 'Carrier-A')
我得到了:
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
但是当我使用时:
re.match('^\<.+\>([\w\s,-]+)\<.+\>$', 'Carrier-A')
没有返回错误。
关于字符序列我应该考虑什么?
最佳答案
破折号 -
在方括号 []
中使用时具有特殊含义:它定义了一个字符范围。例如,[\s-,]
表示“从 \s
到 ,
的任何字符”(这是不可能的)。 但是,如果破折号是方括号中的第一个或最后一个字符,则它没有特殊含义。这就是为什么您的第二个正则表达式是正确的。
关于python - 在破折号后使用逗号但不反转时在正则表达式中得到 `bad character range`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41659309/