Python中的基本正则表达式操作

时间:2012-12-12 01:23:26

标签: python regex

我正在关注正则表达式的教程。执行以下操作时出现错误:

regex = r'(+|-)?\d*\.?\d*'  

显然,Python不喜欢(+ | - )。可能是什么问题?
另外,如果不在正则表达式之前添加r,可能会出现什么问题?

2 个答案:

答案 0 :(得分:3)

+是一个特殊角色。您可以使用括号指定字符范围,这比在这种情况下使用管道字符“或”更好。:

regex = r'([+-])?\d*\.?\d*'  

否则,您只需要在原始版本中将其转义:

regex = r'(\+|-)?\d*\.?\d*'  

使用r是在python中指定正则表达式字符串的首选方法,因为它表示原始字符串,不应解释该字符串,并减少必须使用反斜杠执行的转义量。它只是一个你会在任何地方看到的python正则表达式。

r'(\+|-)?\d*\.?\d*'
#'(\\+|-)?\\d*\\.?\\d*'

答案 1 :(得分:3)

您需要在正则表达式中转义+才能获得文字+,因为它通常意味着“某个或多个实例”:

regex = r'(\+|-)?\d*\.?\d*'  

r使其成为“原始”字符串。如果没有r,正则表达式转义序列将被解释为字符串转义序列,它们将导致各种问题。 (\b是一个退格而不是单词边界,以及那种东西。)