我需要使用python从模式匹配中将\
替换为\\
。
例如,$$\a\b\c$$
应匹配替换为$$\\a\\b\\c$$
。
我无法使用正则表达式来查找匹配项。
>>> import re
>>> p = re.compile("\$\$([^$]+)\$\$")
>>> a = "$$\a\b\c$$"
>>> m = p.search(a)
>>> m.group(1)
'\x07\x08\\c'
我不能简单地将输入作为原始字符串(例如a=r'$$\a\b\c$$'
),因为它会使用markdown处理器自动处理。
我还发现我无法使用替换方法:
>>> a.replace('\\','\\\\')
'$$\x07\x08\\\\c$$'
我该如何解决这个问题?
答案 0 :(得分:2)
您遇到问题的原因是因为您输入的字符串是$$\a\b\c$$
,哪个python转换为'$$\x07\x08\\c$$'
,字符串中唯一的反斜杠实际上是细分市场' \ c'处理这个的最好方法是输入一个这样的
a=r'$$\a\b\c$$'
这将告诉python将字符串文字转换为原始字符。如果您正在从文件中读取内容,则会自动为您完成此操作。
答案 1 :(得分:0)
使用单个反斜杠拆分字符串,然后使用双反斜杠连接结果列表。
s = r'$$\a\b\c$$'
t = r'\\'.join(s.split('\\'))
print('%s -> %s' % (s, t))