我想替换标记为xyz的XML文件中的所有名称。换句话说,替换标记之间的所有内容(包括空格)。我做错了什么?
Search: (<name>)(.*)(</name>)
Replace: \1xyz\3
答案 0 :(得分:12)
您正在尝试parse XML with regular expressions。
然而,无论如何,你做错了就是使用贪婪的重复。这将从第一个<name>
一直到最后一个</name>
(即使它们不属于一起),因为.*
会尝试尽可能多地使用Search: (<name>).*?(</name>)
Replace: \1xyz\2
满足匹配条件..请改用:
<
或者为了安全起见,你也可以逃避>
和Search: (\<name\>).*?(\</name\>)
Replace: \1xyz\2
,因为在某些特定情况下它们是元字符(不是在这一个中):
.*
在这两种情况下,这都会导致.
不合适,即它将消耗尽可能少。
并确保升级到Notepad ++ 6,因为在此之前,Notepad ++的正则表达式引擎存在一些问题。
最后,正如评论. matches newline
中指出的hoombar默认匹配除换行符之外的每个字符。在Notepadd ++中,您可以通过勾选{{1}}复选框来更改此行为。