Python 3.x 在字符串中输入()如何将.sub重新设置为\(\)

Python 3.x 在字符串中输入()如何将.sub重新设置为\(\),python-3.x,regex,escaping,Python 3.x,Regex,Escaping,我想将包含'abc(abc)abc'的字符串重新分为'abc\(abc\)abc' string = 'abc(abc)abc sub_l_string = re.sub(r'\(','\(',string) sub_r_string = re.sub(r'\)','\)',sub_l_string) pp(sub_r_string) 它假设打印“abc\(abc\)abc”,但是它打印 “abc\\(abc\\)abc” 有人能帮忙吗?谢谢 一个选项可以是带有模式的单个替换,从左括号匹

我想将包含
'abc(abc)abc'
的字符串重新分为
'abc\(abc\)abc'

string = 'abc(abc)abc 
sub_l_string = re.sub(r'\(','\(',string) 
sub_r_string = re.sub(r'\)','\)',sub_l_string) 
pp(sub_r_string)
它假设打印
“abc\(abc\)abc”
,但是它打印
“abc\\(abc\\)abc”


有人能帮忙吗?谢谢

一个选项可以是带有模式的单个替换,从左括号匹配并断言右括号,并在完全匹配前后的替换中添加反斜杠
\g


我尝试了它显示的代码
'abc\\\(abc\\)abc'
@musictech请参阅非常有用的:)您的代码。
import re

regex = r"\([^()]*(?=\))"
s = "abc(abc)abc"
result = re.sub(regex, r"\\\g<0>\\", s)

if result:
    print (result)
import re

regex = r"(\([^()]*)\)"
s = "abc(abc)abc"
result = re.sub(regex, r"\\\g<1>\\)", s)

if result:
    print (result)
abc\(abc\)abc