我正在尝试通过使用它来编辑我拥有的一些脚本来学习正则表达式。
我的脚本包含这样
<person name="John">Will be out of town</person><person name="Julie">Will be in town.</person>
我需要替换脚本中的名称值 - 名称的添加始终相同,但我可能有不想更新的名称。
我所拥有的快速示例:
string[] names = new string[1];
names[0] = "John-Example";
names[1] = "Paul-Example";
string ToFix = "<person name=\"John\">Will be out of town</person><person name=\"Julie\">Will be in town.</person>"
for (int i=0; i<names.Length; i++)
{
string Name = names[i];
ToFix = Regex.Replace(ToFix, "(<.*name=\")(" + Name.Replace("-Example", "") + ".*)(\".*>)", "$1" + Name + "$3", RegexOptions.IgnoreCase);
}
这在大多数情况下都有效,但我有两个问题。有时它会删除太多,如果我在字符串中有多个人,它将删除第一个人和最后一个人之间的所有内容,如下所示:
Hello <person name="John">This is John</person><person name="Paul">This is Paul</person>
变成
Hello <person name="John-Example">This is Paul</person>
另外,我想删除 name 值后面和结束 carrat 之前的任何额外文本,以便:
<person name="John" hello>
应更正为:
<person name="John-Example">
我已经阅读了几篇关于正则表达式的文章,觉得我只是在这里遗漏了一些小东西。我将如何以及为什么要解决这个问题?
编辑:我不认为我正在使用的这些脚本归类为 XML - 整个脚本可能有也可能没有 <> 标签。回到这个问题的最初目标,有人可以解释正则表达式的行为吗?以及如何在结束标记之前的名称值之后删除额外的文本?