替换标签名称,同时保持其余部分不变

Replace a Tag Name while keeping the rest as it is

我想先说一下我是正则表达式的新手,我花了相当多的时间尝试使用教程、在线文档等自己解决这个问题。我也已经阅读了这里的建议答案.

现在我的问题是:我有267条这样的线路,每个县都不一样。

<SimpleData name="NAME">Angelina</SimpleData>

我需要做的是用 COUNTY 替换 NAME 并保持其余部分不变,包括正确的县名:

<SimpleData name="COUNTY">Angelina</SimpleData>

我用下面的Find找到所有我想改的行,成功了。

<SimpleData name="NAME">[\S\s\n]*?</SimpleData>

这可能不是最好的方法,但它奏效了。

我希望我已经对此进行了解释,以便大家理解。谢谢,保罗

您需要在替换字段中使用capturing groups with backreferences

查找内容(<SimpleData name=")NAME(">[\S\s\n]*?</SimpleData>)
替换为COUNTY

regex demo

按照常规-expressions.info:

Besides grouping part of a regular expression together, parentheses also create a numbered capturing group. It stores the part of the string matched by the part of the regular expression inside the parentheses.

If your regular expression has named or numbered capturing groups, then you can reinsert the text matched by any of those capturing groups in the replacement text. Your replacement text can reference as many groups as you like, and can even reference the same group more than once. This makes it possible to rearrange the text matched by a regular expression in many different ways.

请注意,在 VSCode 中,您不能使用命名组。

您真的不想为这项工作使用正则表达式。学习 XSLT。

任何使用正则表达式进行此操作的尝试都将匹配不应该匹配的内容,或者无法匹配应该匹配的内容。那不是因为你缺乏正则表达式技巧,而是因为计算机科学理论:XML的语法是递归定义的,而正则表达式不能处理递归定义的语法。