我在 xml 文件上应用了一些正则表达式来查找和替换值。通常它可以工作。(我听到声音说“使用 xml 解析器”。同时我不能。)但是如果值中有一个特殊字符,它会破坏一切。
认为我有一个如下的 xml 文件:
<fieldset>
<idle1>
<value>something\\n</value>
</idle1>
<idle2>
<value>blabla</value>
</idle2>
</fieldset>
如果我尝试替换 " <idle2><value>
" 节点中的值," <idle1><value>
" 节点的值将变为 "something\n"。在写入文件时,xml 变为:
<fieldset>
<idle1>
<value>something
</value>
</idle1>
<idle2>
<value>blabla</value>
</idle2>
</fieldset>
好吧,在搜索和替换中我都使用“r”字符串文字。但它似乎不起作用。我解决问题。对于每次搜索和替换,我将“\n”替换为“ \\n
”,然后将结果写入文件。但这不是一种有效的使用方式。
有什么我看不到的吗?我只想将“ \\n
”写入文件。这是我想要的这么多吗?
编辑:这是我的正则表达式:
搜索:
self.searchPattern=(<fieldset>)(.*?)(<idle2>)(.*?)(<value>)(.*?)(</value>)(.*?)(</idle2>)(.*?)(</fieldset>)
替换:
self.replacePattern=`\g<1>\g<2>\g<3>\g<4><value>denemeasdasd\\\\n</value>\g<8>\g<9>\g<10>\g<11>`
这是用于搜索的 python 代码:
self.pattern = re.compile(r''''''+self.searchPattern+'''''', flags = re.S | re.U)
这是为了替换
outtext = self.pattern.sub(r''''''+self.replacePattern+'''''',r''''''+self.match.group(0)+'''''')