python - 在破折号后使用逗号但不反转时在正则表达式中得到 `bad character range`

标签 python regex python-2.7

我已经在 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/

相关文章:

javascript - 正则表达式匹配sql创建表语句中的表名

python - 每个值多个键

python - WTForms 小数点分隔符(适用于非英语应用程序)

python - 如何在 .kv 文件中使用 if 语句

Python: "TypeError: ' 组的对象不可调用”

sql - SQL 日期时间对象中时区的正则表达式

python - 克隆 mechanize.Browser 产生错误

python - 删除 Bert 中的 SEP token 以进行文本分类

python - 在 pyspark RDD 上显示分区

php - 查找具有未知数字的数字之间的最小可能差异