使用正则表达式从字符串中提取值

时间:2011-12-14 13:10:26

标签: c# .net regex

尝试使用正则表达式从字符串中提取值。字符串如下所示:

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

我正在尝试仅向最终用户显示错误消息。

4 个答案:

答案 0 :(得分:2)

由于您可能希望所有内容<![CDATA[]]>都适合:

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

已更新以对应问题编辑:

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

答案 3 :(得分:0)

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

现在,通过错误消息我假设你的意思是文本,不包括数字。像这样的表达式可能会起到作用:

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

错误消息将在第二组中。这将与您提供的示例一起使用,但我很快会使用XDocumentXmlDocument来解析它。如果你正在使用C#,那么就没有充分的理由不使用这两个类。