在Python中工作时,如何在正则表达式的结果中保留反斜杠?

时间:2011-11-16 16:09:18

标签: python regex escaping

我想要匹配的字符串包括一些转义序列,比如'It's something'。将它与'。*?'匹配是没有问题的,但结果会自动转义。如何防止自动转义,并保持反斜率原样?

例如:

>>> re.findall('\((?P<content>.*?)\)','(It\'s something)')
["It's something"]

我想要的是:

[r"It\'s something"]

2 个答案:

答案 0 :(得分:3)

输入字符串也必须是原始字符串。否则,它会在正则表达式看到之前转换:

>>> import re
>>> re.findall('\((?P<content>.*?)\)',r'(It\'s something)')
["It\\'s something"]
>>> _ == [r"It\'s something"]
True

答案 1 :(得分:1)

输入字符串中没有反斜杠。

>>> re.findall('\((?P<content>.*?)\)', r'(It\'s something)')
["It\\'s something"]
>>> ["It\\'s something"] == [r"It\'s something"]
True