2011-12-14 164 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#,那麼確實沒有理由不使用這兩個類中的任何一個。

相關問題