python-3.x - 在字符串中有 ( ) 如何 re.sub 到 \( \)
问题描述
我想 re.sub 有的 '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<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
推荐阅读
- dart - 如何在 Flutter 中重新加载 FileImage
- mysql - 需要的mysql语句
- multithreading - 如何识别进程中每个线程的内存消耗?
- java - Javafx 特定文件夹的路径并选择在文本字段中输入的文件
- html - 为什么标题容器的子级不水平对齐?
- node.js - 使用角度5+从ftp下载文件?
- javascript - 使用javascript输入后隐藏文本
- elasticsearch - 如何在 Golang 中将数组传递给 Elasticsearch 的 NewTermsQuery?
- ios - 在子视图中添加 UIImage 并添加约束 - 图像不会调整大小
- java - 在游戏框架中限制登录尝试 3 次