2011-12-14 158 views
0

我想使用正则表达式从字符串中提取值。该字符串看起来像这样:使用正则表达式从字符串中提取值

<faultcode>&lt;![CDATA[900015The new password is not long enough. PasswordMinimumLength is 6.]]&gt;</faultcode> 

我想只显示最终用户的错误消息。

+0

而且,你在找什么价值? – 2011-12-14 13:12:00

+0

你试图提取哪个值? – 2011-12-14 13:12:23

回答

2

因为你很可能想要的一切<![CDATA[]]>这应该符合:

<!\[CDATA\[(.+?)\]\]> 
2

唯一明智的做法是将其加载到一个XElement(或的XDocument,XmlDocument的),并从中提取CDATA元素的值。

XElement e = XElement.Parse(xmlSnippet); 
string rawMsg = (e.FirstNode as XCData).Value; 
string msg = rawMsg.Substring("900015".Length); 
0

更新与问题编辑对应:

var xml = XElement.Parse(yourString); 
var allText = xml.Value; 
var stripLeadingNumbers = Regex.Match(xml.Value, @"^\d*(.*)").Groups[1].Value; 
0

首先,也是最重要的,使用regex to parse XML/HTML is bad

现在,通过错误消息,我假定你的意思是文本,不包括数字。像这样的表达可能会做的伎俩:

\<([^>]+)\>&lt;!\[CDATA\[\d*(.*)\]\]&gt;\</\1\> 

错误消息将在第二小组。这将与您提供的样本一起工作,但我会尽早使用XDocumentXmlDocument来解析它。如果您使用的是C#,那么确实没有理由不使用这两个类中的任何一个。

相关问题