Python 正则表达式只需要添加第二个反斜杠
Python Regex Expression Needed to Add Only a 2nd Backslash
我有一个在 sed 中有效的表达式,需要为 python 采用它。我想在每个“单个”反斜杠旁边插入一个反斜杠。为清楚起见,我将单独的反斜杠替换为“X”。这是在 sed 中有效的方法。请记住,sed 实际上将输入视为 aaa\bbb\ccc。我希望输出为“aaa\bbb\ccc”。
echo "aaa\bbb\\ccc" | sed -e 's/\([^\]\)\\([^\]\)/X/'
我尝试了一些方法,例如:
re.sub("([^\])\([^\])", "X", r"1236\789")
r"1236\789".replace(r"([^\])\([^\])", "X")
对您传递给 re.sub
的其他参数也使用 r
表示法——这样字符串就可以 as-is (所有反斜杠)传递给正则表达式引擎(也使用反斜杠转义)。
所以:
s = re.sub(r"([^\])\([^\])", r"X", r"1236\789")
或者,将 X
替换为两个反斜杠:
s = re.sub(r"([^\])\([^\])", r"\\", r"1236\789")
在边界情况下,此正则表达式无法正常工作(如果我正确理解您的目的):当单独的反斜杠是字符串中的第一个或最后一个字符时,它不会加倍.如果您需要这样做,请使用 look-around:
s = re.sub(r"(?<!\)\(?!\)", r"\\", r"1236\789")
蛮力,我想通了。我需要再看一下才能找出原因。
re.sub(r"([^\])\([^\])", r"x", r"aaa\bbb\ccc")
我有一个在 sed 中有效的表达式,需要为 python 采用它。我想在每个“单个”反斜杠旁边插入一个反斜杠。为清楚起见,我将单独的反斜杠替换为“X”。这是在 sed 中有效的方法。请记住,sed 实际上将输入视为 aaa\bbb\ccc。我希望输出为“aaa\bbb\ccc”。
echo "aaa\bbb\\ccc" | sed -e 's/\([^\]\)\\([^\]\)/X/'
我尝试了一些方法,例如:
re.sub("([^\])\([^\])", "X", r"1236\789")
r"1236\789".replace(r"([^\])\([^\])", "X")
对您传递给 re.sub
的其他参数也使用 r
表示法——这样字符串就可以 as-is (所有反斜杠)传递给正则表达式引擎(也使用反斜杠转义)。
所以:
s = re.sub(r"([^\])\([^\])", r"X", r"1236\789")
或者,将 X
替换为两个反斜杠:
s = re.sub(r"([^\])\([^\])", r"\\", r"1236\789")
在边界情况下,此正则表达式无法正常工作(如果我正确理解您的目的):当单独的反斜杠是字符串中的第一个或最后一个字符时,它不会加倍.如果您需要这样做,请使用 look-around:
s = re.sub(r"(?<!\)\(?!\)", r"\\", r"1236\789")
蛮力,我想通了。我需要再看一下才能找出原因。
re.sub(r"([^\])\([^\])", r"x", r"aaa\bbb\ccc")