C# 在C中使用正则表达式提取XML值#

C# 在C中使用正则表达式提取XML值#,c#,regex,xml,C#,Regex,Xml,我很抱歉,如果以前有人问过这个问题,之前关于这个话题的所有帖子都很有帮助,但我仍然很难找到解决问题的方法。我对编程和正则表达式还是很陌生,如果这是一个愚蠢的问题,我很抱歉 我需要一个正则表达式模式,它将取3个特定xml标记之间的值。并将该值替换为零 这就是我目前拥有的: string pattern = @"<A99_01>(.*?)</A99_01>"; string input = "<A99_01>TEST</A99_01><A99_0

我很抱歉,如果以前有人问过这个问题,之前关于这个话题的所有帖子都很有帮助,但我仍然很难找到解决问题的方法。我对编程和正则表达式还是很陌生,如果这是一个愚蠢的问题,我很抱歉

我需要一个正则表达式模式,它将取3个特定xml标记之间的值。并将该值替换为零

这就是我目前拥有的:

string pattern = @"<A99_01>(.*?)</A99_01>";
string input = "<A99_01>TEST</A99_01><A99_02>TEST</A99_02><A99_03>TEST</A99_03><A99_04>TEST</A99_04>";
string replacement = "";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
string模式=@“(.*?”;
string input=“testtest”;
字符串替换=”;
正则表达式rgx=新正则表达式(模式);
字符串结果=rgx.Replace(输入,替换);
我当前的正则表达式模式只匹配一个必需的标记,我不知道如何只选择它的值而不拉动整行。可以列出多个模式吗

我只想在标签
上执行替换,而不接触上面的任何标签


提前感谢您的帮助

您可以使用捕获组

Regex.Replace(str, @"<(A99_0[123]>).*?</\1", "<$1</$1");

Regex.Replace(str,@”).*

我建议:

  • 通过XmlDocument或XDocument加载XML(最好)
  • 使用Linq to XML解析XML
  • 过滤掉任何你不想要的标签
  • 根据过滤后的版本构造新的XML文档/文件

我可能遗漏了一些东西,但是为什么不使用System.Xml名称空间(比如XmlDocument)?永远不要使用正则表达式来解析xml或html。xml解析器是更好的选择当前xml有两个根节点,或者我建议也使用XmlDocument。目前您无法将其加载到XmlDocumentHi Simon,我当前使用System.Text.RegularExpressions。使用System.xml解决此问题更容易吗?我会的对该名称空间进行一些研究。谢谢!始终使用XML API来处理XML。永远不要使用正则表达式来处理XML。改用LINQ to XML。谢谢Avinash!什么是“str”“在模式的末尾执行吗?如果我想用数字日期替换标记之间的值,该怎么办?”?例如,1900-01-01。是否有办法将此设置为“替换”