使用正则表达式从字符串中提取值
问题描述:
我想使用正则表达式从字符串中提取值。该字符串看起来像这样:使用正则表达式从字符串中提取值
<faultcode><![CDATA[900015The new password is not long enough. PasswordMinimumLength is 6.]]></faultcode>
我想只显示最终用户的错误消息。
答
因为你很可能想要的一切<![CDATA[
和]]>
这应该符合:
<!\[CDATA\[(.+?)\]\]>
答
唯一明智的做法是将其加载到一个XElement
(或的XDocument,XmlDocument的),并从中提取CDATA元素的值。
XElement e = XElement.Parse(xmlSnippet);
string rawMsg = (e.FirstNode as XCData).Value;
string msg = rawMsg.Substring("900015".Length);
答
更新与问题编辑对应:
var xml = XElement.Parse(yourString);
var allText = xml.Value;
var stripLeadingNumbers = Regex.Match(xml.Value, @"^\d*(.*)").Groups[1].Value;
答
首先,也是最重要的,使用regex to parse XML/HTML is bad。
现在,通过错误消息,我假定你的意思是文本,不包括数字。像这样的表达可能会做的伎俩:
\<([^>]+)\><!\[CDATA\[\d*(.*)\]\]>\</\1\>
错误消息将在第二小组。这将与您提供的样本一起工作,但我会尽早使用XDocument
或XmlDocument
来解析它。如果您使用的是C#,那么确实没有理由不使用这两个类中的任何一个。
而且,你在找什么价值? – 2011-12-14 13:12:00
你试图提取哪个值? – 2011-12-14 13:12:23