2024-04-20 05:09:39 发布
网友
我正在尝试对python中的字符串执行一个简单的regex替换。这是我的代码:
>>> s = "num1 1 num2 5" >>> re.sub("num1 (.*?) num2 (.*?)","1 \1 2 \2",s)
我希望得到这样的输出,\number被替换为相应的组。在
\number
但是,我得到的输出是:
'1 \x01 2 \x025'
我有点困惑,为什么\x0是他们的,而不是我想要的。非常感谢你的帮助
\x0
您需要开始使用原始字符串(在字符串前面加上r):
>>> import re >>> s = "num1 1 num2 5" >>> re.sub(r"num1 (.*?) num2 (.*?)", r"1 \1 2 \2", s) '1 1 2 5'
否则,您将需要对python和regex的反斜杠进行转义,如下所示:
(这很快就过时了,看看python regex docs的开头段落
\1和\2被解释为八进制字符代码转义,而不仅仅是传递给regex引擎。使用原始字符串r"\1"而不是"\1"阻止了这种解释。在
\1
\2
r"\1"
"\1"
>>> "\17" '\x0f' >>> r"\17" '\\17'
正在字符串中解释\1。因此您必须用反斜杠转义\:
\
>>> re.sub("num1 (.*?) num2 (.*?)", "1 \\1 2 \\2",s) '1 1 2 5'
也可以使用原始字符串:
您需要开始使用原始字符串(在字符串前面加上r):
否则,您将需要对python和regex的反斜杠进行转义,如下所示:
^{pr2}$(这很快就过时了,看看python regex docs的开头段落
\1
和\2
被解释为八进制字符代码转义,而不仅仅是传递给regex引擎。使用原始字符串r"\1"
而不是"\1"
阻止了这种解释。在正在字符串中解释
\1
。因此您必须用反斜杠转义\
:也可以使用原始字符串:
^{pr2}$相关问题 更多 >
编程相关推荐