使用正则表达式从字符串中提取值
本文关键字:提取 字符串 正则表达式 | 更新日期: 2023-09-27 18:18:02
我试图使用正则表达式从字符串中提取值。字符串看起来像这样:
<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);
首先,使用正则表达式解析XML/HTML是不好的。
现在,我认为错误信息是指文本,不包括数字。像这样的表达式可能会达到这个目的:
'<([^>]+)'><!'[CDATA'['d*(.*)']']>'</'1'>
错误信息将在第二组中。这将与您给出的示例一起工作,但我宁愿使用XDocument
或XmlDocument
来解析它。如果你正在使用c#,真的没有理由不使用这两个类。
已更新,以与问题编辑相对应:
var xml = XElement.Parse(yourString);
var allText = xml.Value;
var stripLeadingNumbers = Regex.Match(xml.Value, @"^'d*(.*)").Groups[1].Value;