0

我有一个 xml 文件:

"<?xml version=\"1.0\" encoding=\"utf-8\"?><response list=\"true\"><count>2802</count><post><id>4210</id><from_id>2176594</from_id><to_id>-11423648</to_id><date>1365088358</date><text>dsadsad #ADMIN</text>...

我想在<from_id>and之间取一个字符串</from_id>

我有一个正则表达式<from_id>(.*?)</from_id>,但它返回带有标签的字符串。你能帮助我吗?等待回复) PS:对不起我的英语不好!

4

1 回答 1

10

正如其他人已经指出的那样,使用 XML 解析器可能会更安全、更干净。

也就是说,您已经有了一个有效的正则表达式。只要确保检索捕获组#1。这会让你得到第一对括号内的内容。

如果您使用的是 C#,而不是调用toString()Match请查看其Groups属性并获取其第一个元素:

string pattern = "<from_id>(.*?)</from_id>";
string input = "<?xml version=\"1.0\" encoding=\"utf-8\"?><response list=\"true\"><count>2802</count><post><id>4210</id><from_id>2176594</from_id><to_id>-11423648</to_id><date>1365088358</date><text>dsadsad #ADMIN</text>";
Match match = Regex.Match(input, pattern);
if (match.Success){
    System.Console.WriteLine(match.Groups[1].Value);
}

看到它在这个Ideone片段中工作。

如果你想获得模式的所有匹配,你可以使用,并以相同的方式Regex.Matches()迭代每个。MatchMatchCollection

于 2013-04-04T16:02:40.207 回答