如何解决在字符串中有 ( ) 如何重新.sub 到 \( \)
我想将包含 'abc(abc)abc'
的字符串 re.sub 到 '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<0>
import re
regex = r"\([^()]*(?=\))"
s = "abc(abc)abc"
result = re.sub(regex,r"\\\g<0>\\",s)
if result:
print (result)
或者使用捕获组 g<1>
import re
regex = r"(\([^()]*)\)"
s = "abc(abc)abc"
result = re.sub(regex,r"\\\g<1>\\)",s)
if result:
print (result)
输出
abc\(abc\)abc
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。