Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python正则表达式去掉了反斜杠_Python_Regex - Fatal编程技术网

python正则表达式去掉了反斜杠

python正则表达式去掉了反斜杠,python,regex,Python,Regex,通过这段代码,我得到: newContent='asdf asdf \nOUTPUT_DIRECTORY = working\topOnly' 我希望它是: newContent='asdf asdf \nOUTPUT_DIRECTORY = working\\topOnly' reg ex正在剥离“working”和“topoly”之间的“”。如果我执行类似于“valStr='working\\ytopOnly'”的操作,那么它将按预期工作 我需要在我的代码中更改什

通过这段代码,我得到:

newContent='asdf asdf \nOUTPUT_DIRECTORY       = working\topOnly'
我希望它是:

newContent='asdf asdf \nOUTPUT_DIRECTORY       = working\\topOnly'
reg ex正在剥离
“working”和
“topoly”之间的
”。如果我执行类似于
“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)

re.sub的帮助说明:

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

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

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

re.sub的帮助说明:

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

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

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

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

 valStr = 'working\\topOnly'
 print valStr
你认为
print
是否也在“剥离”你的背部斜线?也许这是个阴谋

这只是Python解析器本身。与几乎所有语言解析器一样,它将反斜杠视为转义,因此
g\\t
表示g-backslax-t,而
g\t
表示“g-tab”。试一试

 valStr = 'working\\\\topOnly'

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

 valStr = 'working\\topOnly'
 print valStr
你认为
print
是否也在“剥离”你的背部斜线?也许这是个阴谋

这只是Python解析器本身。与几乎所有语言解析器一样,它将反斜杠视为转义,因此
g\\t
表示g-backslax-t,而
g\t
表示“g-tab”。试一试

 valStr = 'working\\\\topOnly'

实际输出和预期输出在问题上相同,请编辑它。实际输出和预期输出在问题上相同,请编辑它。My IDE显示字符串的repr版本。Mu Mind解决方案有效。感谢您的帮助我的IDE显示了字符串的repr版本。Mu Mind解决方案有效。谢谢你的帮助