替换在记事本中使用正则表达式++(Replace using RegEx in notepad++)

2019-10-17 08:52发布

我想,以取代与假设XYZ标签的XML文件中的所有名称。 换句话说,更换标签之间的所有内容(包括空格)。 我究竟做错了什么?

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

Answer 1:

您正在尝试用正则表达式解析XML 。

但是,你反正做什么错用贪婪的重复。 这将从第一大老远跑到<name>到最后</name> (即使他们不属于一起),因为.*将尝试使用尽可能多的同时仍然满足匹配条件..使用这个来代替:

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

还是要安全起见,您还可以逃避<> ,因为它们是在某些特定情况下(而不是在这一个虽然)元字符:

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

在这两种情况下,这使得.* ungreedy,也就是说它会尽可能少地消耗。

并确保您升级到记事本+ + 6,因为在此之前有使用记事本++的正则表达式引擎的几个问题。

最后,作为hoombar在评论中指出. 默认情况下, 换行符每一个字符相匹配。 在Notepadd ++,你可以通过选中更改此行为. matches newline . matches newline复选框。



文章来源: Replace using RegEx in notepad++