字符串是G:\\one\\two\\three.htm,我想要的结果是G/one/two/three.htm,如何使用python和regex获得所需的结果?
我试过了re.sub('\\\\\\\\', '/', string),但是工作但是离开了:.我不想再用正则表达式删除:.谁可以帮我解决上述问题?
这是@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)
然后,正则表达式引擎将每两个反斜杠解释为匹配一个字面反斜杠的模式.所以正则表达式将四个反斜杠解释为匹配两个字面反斜杠的模式.