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

本文关键字:提取 字符串 正则表达式 | 更新日期: 2023-09-27 18:18:02

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

<faultcode>&lt;![CDATA[900015The new password is not long enough. PasswordMinimumLength is 6.]]&gt;</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);

首先,使用正则表达式解析XML/HTML是不好的。

现在,我认为错误信息是指文本,不包括数字。像这样的表达式可能会达到这个目的:

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

错误信息将在第二组中。这将与您给出的示例一起工作,但我宁愿使用XDocumentXmlDocument来解析它。如果你正在使用c#,真的没有理由不使用这两个类。

已更新,以与问题编辑相对应:

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