在notepad ++中使用RegEx替换

时间:2012-11-02 12:25:42

标签: xml regex notepad++

我想替换标记为xyz的XML文件中的所有名称。换句话说,替换标记之间的所有内容(包括空格)。我做错了什么?

Search: (<name>)(.*)(</name>)
Replace: \1xyz\3

1 个答案:

答案 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}}复选框来更改此行为。