python正则表达式删除反斜杠

时间:2011-05-17 18:22:07

标签: python regex

使用此代码我得到:

newContent='asdf asdf \nOUTPUT_DIRECTORY       = working\topOnly'

我希望它是:

newContent='asdf asdf \nOUTPUT_DIRECTORY       = working\\topOnly'

reg ex正在"""\""""""working"""之间删除"""topOnly"""。如果我执行"""valStr = 'working\\ytopOnly'"""之类的操作,那么它会按预期工作。

我需要更改代码以使其符合预期?

import re

valStr = 'working\\topOnly'
cmdFileContent = 'asdf asdf \nOUTPUT_DIRECTORY       = asdf'
name = 'OUTPUT_DIRECTORY'

varRegEx = r"""
    (\n          #match new line
    %s            #var
    \s*           #skip white spaces
    =
    \s?)          #skip white spaces
    (.*)          #match and store rest of line
    """%name

newContent  = re.compile(varRegEx, re.VERBOSE).sub(r'\1%s'%valStr, cmdFileContent)

2 个答案:

答案 0 :(得分:1)

re.sub的帮助说:

  

repl可以是字符串也可以是可调用的;如果处理了字符串,则反斜杠转义。

由于它正在执行自己的处理转义层,因此您需要另一个转义层:

newContent = re.compile(varRegEx, re.VERBOSE).sub(r'\1%s'%valStr.replace('\\', '\\\\'), cmdFileContent)

答案 1 :(得分:0)

与reg-exp完全无关。试试这个:

 valStr = 'working\\topOnly'
 print valStr

您认为print是否正在“剥离”您的反斜杠之一?也许这是一个阴谋!

这只是Python解析器本身。像几乎每个语言解析器一样,它将反斜杠视为转义,因此g\\t表示g-backslash-t,而g\t表示'g-tab'。尝试

 valStr = 'working\\\\topOnly'