社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Jack • 6 年前 • 1610 次点击  

我想换掉所有的双反斜杠 \\ 包含在带有四个反斜杠的$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
 
1610 次点击  
文章 [ 1 ]  |  最新文章 6 年前
John
Reply   •   1 楼
John    6 年前

尝试如下操作:

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

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

图案粗浅说明:

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

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

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

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