Py学习  »  Python

如何使用python和regex将$symbols之间的2个反斜杠替换为4个反斜杠?

Jack • 5 年前 • 891 次点击  

我想换掉所有的双反斜杠 \\ 包含在带有四个反斜杠的$symbols或$symbols之间 \\\\ .

例如,我想转换 some \\ random text $ 5\\ 6$ some \\ random text $ 5\\\\ 6$ some $5x^2 \$ random text $$ 5 \\ 6$$ some $5x^2 \$ random text $$ 5 \\\\ 6$$ .

如何使用regex和python实现这一点?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30407
 
891 次点击  
文章 [ 1 ]  |  最新文章 5 年前
John
Reply   •   1 楼
John    5 年前

尝试如下操作:

模式: (?<!\\)([$]+)([^$]*?)\\([^$]*?)(?<!\\)\1 替代: \1\2\\\\\\\\\3\1

使用您提供的测试的示例: https://regex101.com/r/X9lGCF/2

图案粗浅说明:

(?<!\\)([$]+) -匹配并捕获至少一个未捕获的 $ ; (?<!\\) 是一个负面的回顾,以确保 $ 的前面没有反斜杠

([^$]*?)\\([^$]*?) -捕获第一个匹配项之间的文本 $ 序列和相同的初始匹配 $ 序列在 \\

(?<!\\)\1 -重新使用最初匹配的 $ 我们的模式中的顺序(这加强了周围环境 $ 序列长度相同;例如不匹配 $\\$$ )确保最后一个序列也未被捕获。

替换将用周围捕获的文本替换反斜杠(它们已被转义,因此我们使用其中8个来获取4个反斜杠),并且 $ 序列。