我正在关注有关正则表达式的教程。执行以下操作时出现错误:
regex = r'(+|-)?\d*\.?\d*'
显然,Python 不喜欢 (+|-)。可能是什么问题呢?
另外,在正则表达式之前不添加 r 可能会出现什么问题?
+
是一个特殊字符。您可以使用方括号来指定字符范围,这比在这种情况下使用带有管道字符的“或”更好:
regex = r'([+-])?\d*\.?\d*'
否则,您只需要在原始版本中转义它:
regex = r'(\+|-)?\d*\.?\d*'
使用r
是在 python 中指定正则表达式字符串的首选方式,因为它指示原始字符串,不应解释它并减少必须使用反斜杠执行的转义量。它只是一个随处可见的 python 正则表达式习语。
r'(\+|-)?\d*\.?\d*'
#'(\\+|-)?\\d*\\.?\\d*'
您需要+
在正则表达式中转义以获得文字+
,因为它通常表示“某事的一个或多个实例”:
regex = r'(\+|-)?\d*\.?\d*'
并r
使其成为“原始”字符串。如果没有r
,正则表达式转义序列将被解释为字符串转义序列,它们会导致各种问题。(\b
作为退格而不是单词边界,以及那种东西。)