正则表达式匹配xml属性值

时间:2012-11-23 15:25:23

标签: c# xml regex parsing

我想获取此xml属性limit=\"25\"

的整数值

我试过这个: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>

3 个答案:

答案 0 :(得分:1)

你的第一个正则表达式有太多了。数数吧。

由于属性值周围的引号,您的第二个失败了。请改为"limit=\"([0-9])\"$"

许多人会告诉您使用XML解析器。我强烈建议,如果你做的不仅仅是从知名的XML中提取非常小的数据,因为XML本身不能用正则表达式解析。

答案 1 :(得分:1)

Regex可以用于解析XML,因为它的格式是严格推荐不能

使用

使用LINQ2XML

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

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

答案 2 :(得分:-1)

最好使用

string TheStringNeededToBeParsed =“... the xml”;

TheStringNeededToBeParsed .IndexOf(...