Notepad++正则表达式替换

3

你好,我这里有一个很大的文件,需要替换一些值,因此必须使用正则表达式: 能否有人帮助我并告诉我如何做呢?

<FieldRef ID="{FE652450-8A96-416E-AAE4-F85BE196A249}" Name="CG"  DisplayName="CG"/>
  <FieldRef ID="{AAA6ABCD-CE07-4D0E-A689-773DD47F4D64}" Name="Statut"  DisplayName="Statut"/>
  <FieldRef ID="{F13A3B87-47DE-4DE2-B480-FE1126B0D5E2}" Name="ElementCMin"  DisplayName="Element C Min"/>

所以在这几行中,我需要将ID = "{guid}"替换为空字符串。

1
ID="[^"]+"应该可以。虽然没有经过测试,也不记得Notepad++的正则表达式规则的详细内容了。 - Corbin
小提示:在替换任何内容之前,您可以使用Notepad++的“标记”功能来检查您的替换是否正确。 - Gabber
2个回答

7
尝试以下内容:
ID="{[a-zA-Z0-9-]+}"

1
你还可以更具体一些,将“+”替换为确切的字符数: ID = "{[a-zA-Z0-9-] {36}}" - Anthony K

1

这个正则表达式应该可以

ID="\{.*\}"

使用替换为空的方法,然后你就完成了。 但是,如果你有更多以}"结尾的内容,记事本会做错事情,将替换函数应用于此行。

text1 ID="{F13A3B87-47DE-4DE2-B480-FE1126B0D5E2}" 
text ID="{F13A3B87-47DE-4DE2-B480-FE1126B0D5E2}" text2

将删除除了

之外的所有内容。
text1 text2

如果您需要解决这个问题,请查看Notepad++非贪婪正则表达式

编辑: 如果您使用的是Notepad++ 5.9或更高版本,则正确的正则表达式为

ID="\{.*?\}"

它会停在该行第一个花括号处


@Benoit 看起来你甚至没有完整地阅读我的回答,问题在我第一次编辑之前就已经指出了。假设文件都像示例那样,我的回答可以正常工作。假设文件中有多个 GUID 在同一行中,使用 np++ v 5.9,编辑后的回答可以正常工作。 - Gabber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接