2012-11-23 70 views
-3

我想這個XML屬性limit=\"25\"正則表達式匹配XML屬性值

這個我試過的整數值:Match match = Regex.Match(response.Content, "(?<=limit=))\\d+"); 給我一個錯誤:「太多)的

這個:Match match = Regex.Match(response.Content, @"limit=([0-9])$" 這個沒有返回值,則匹配不成功

從這個XML:

<issues type="array" limit="25" total_count="251" offset="0"> 
<issue> 
<id>4317</id> 
+2

你爲什麼不使用XML解析器? –

+0

因爲我的程序接收格式化字符串作爲XML –

+0

@ConradC不使用'REGEX'請... – Anirudha

回答

-1

這是更好使用

string TheStringNeededToBeParsed =「... the xml」;

TheStringNeededToBeParsed .IndexOf(...

1

你的第一個正則表達式太多了)。數它們。

由於屬性值周圍有引號,因此您的第二個失敗。改爲嘗試"limit=\"([0-9])\"$"

很多人會告訴你改用XML解析器。我強烈建議,如果您只是從知名的XML中提取數據,而不是很少,因爲XML本身不能用正則表達式解析。

+0

第二個也是失敗,因爲有一個以上的數字,試試'「limit = \」([0-9] +)\「$」 '或''limit = \「(\ d +)\」$「'。 – MRAB

1

Regex可用於解析XML,因爲它是嚴格其格式,但它不是推薦使用它

使用LINQ2XML

XElement doc=XElement.Parse(response.Content);  
var value=doc.Attribute("limit").Value; 

OR

var value=Regex.Match(response.Content, @"limit=""(\d+)""",RegexOptions.Singleline).Groups[1].Value; 
+0

謝謝,但我不想收集子元素的集合,該元素是xml中的第一個元素。 <問題類型= 「陣列」 極限= 「25」 TOTAL_COUNT = 「251」 偏移= 「0」>

+0

@ConradC抱歉reply..check晚出編輯 – Anirudha

+0

其優良的,但你的代碼不起作用,它會返回一個空字符串。 我用indexof來獲取限制和「」的指標,然後我得到的子字符串的值。 attribue是這個'limit = \「25 \''有反斜槓 –