正则表达式处理双反斜杠

hol*_*lys 3 python regex

字符串是G:\\one\\two\\three.htm,我想要的结果是G/one/two/three.htm,如何使用python和regex获得所需的结果?
我试过了re.sub('\\\\\\\\', '/', string),但是工作但是离开了:.我不想再用正则表达式删除:.谁可以帮我解决上述问题?

unu*_*tbu 9

这是@Matthias的答案,适用于Python:

In [6]: re.sub(r':?\\+', '/', r'G:\\one\\two\\three.htm')
Out[6]: 'G/one/two/three.htm'
Run Code Online (Sandbox Code Playgroud)

注意正则表达式模式r':?\\+'不是':?\\+'.

r告诉Python接下来就是原始字符串.

Python将其解释':?\\+'为带有一个反斜杠的字符串:

In [7]: list(':?\\+')
Out[7]: [':', '?', '\\', '+']
Run Code Online (Sandbox Code Playgroud)

使用list,如上,可以让你看到的字符串中的单个字符.'\\'是一个由一个反斜杠组成的Python字符串.

Python将其解释r':?\\+'为带有两个反斜杠的字符串:

In [8]: list(r':?\\+')
Out[8]: [':', '?', '\\', '\\', '+']
Run Code Online (Sandbox Code Playgroud)

':?\\\\\\\\'为你工作的原因是因为Python将它解释为带有四个反斜杠的字符串:

In [9]: list(':?\\\\\\\\')
Out[9]: [':', '?', '\\', '\\', '\\', '\\']
Run Code Online (Sandbox Code Playgroud)

然后,正则表达式引擎将每两个反斜杠解释为匹配一个字面反斜杠的模式.所以正则表达式将四个反斜杠解释为匹配两个字面反斜杠的模式.