是否可以使用正则表达式从文本文件-c#.NET中重复的属性中提取文本
我目前正在做一些工作,需要从一个大的列表标签中提取一个属性,它们的格式如下:是否可以使用正则表达式从文本文件-c#.NET中重复的属性中提取文本,c#,.net,xml,regex,string,C#,.net,Xml,Regex,String,我目前正在做一些工作,需要从一个大的列表标签中提取一个属性,它们的格式如下: <appid="928" appname="extractapp" supportemail="me@mydomain.com" /><appid="928" appname="extractapp" supportemail="me@mydomain.com" /> 这些标记一个接一个地重复,并且都具有不同的appid、appname和supportemail 我只需要提取所有支持电子邮
<appid="928" appname="extractapp" supportemail="me@mydomain.com" /><appid="928" appname="extractapp" supportemail="me@mydomain.com" />
这些标记一个接一个地重复,并且都具有不同的appid、appname和supportemail
我只需要提取所有支持电子邮件,只提取电子邮件地址,不提取支持电子邮件=
我是否需要使用两个正则表达式语句,一个用于分离每个单独的标记,然后循环遍历结果并取出电子邮件
然后我会浏览并将电子邮件添加到列表中,然后循环浏览列表并将每个电子邮件写入一个txt文件,后面加一个逗号
我从来没有用过太多的正则表达式,所以不知道它是否适合上面的情况
我会花更多的时间亲自尝试,但这很紧急。因此,希望有人能提供帮助。如何修改字符串使其具有正确的xml格式并加载xml以提取supportemail属性的所有值?您考虑过Linq转换为xml吗 使用
string pattern = "supportemail=\"([^\"]+)";
MatchCollection matches = Regex.Matches(inputString, pattern);
foreach(Match m in matches)
Console.WriteLine(m.Groups[1].Value);
请看。使用XML可能更好,但以下是您将使用的正则表达式(如果您需要/希望使用正则表达式来读取XML):
(appid=“(?[^”]+)”appname=“(?[^”]+)”supportemail=“(?[^”]+)”)
您可以将最后一点放在支持电子邮件中,但这将提取您提到的所有属性,并将它们“分组”到每个标记中。使用正则表达式而不是XML DOM会遇到的问题:
appId
在appName
之前)的正则表达式,如果属性(其顺序对于XML来说无关紧要)以不同于正则表达式预期的顺序出现,则将失败
、
、
、
和“
的返回值考虑到这是XML,为什么不使用XmlTextReader呢我同意,XML阅读器应该是您的首选,除非您确实确定输入的格式始终与您发布的方式相同。如果需要使用regexp,一个使用组的regexp就足够了(尽管我不能马上背诵正确的c#语法),我没有想到XML,因为标记在开始时没有名称,只有一个属性列表。即使这不能用它的原始格式完成,我已经看到了一个简单的解决方法。谢谢
(appid="(?<AppID>[^"]+)" appname="(?<AppName>[^"]+)" supportemail="(?<SupportEmail>[^"]+)")