正则表达式前瞻断言不起作用

时间:2014-01-23 19:58:18

标签: c# regex

我想用C#解析一段javascript。

javascript就像

var info1 = {timestamp: "1390678800000",amount: "123",guaranteed: "False"};
var info2 = {timestamp: "1390510500000",amount: "234",guaranteed: "True"};
var info3 = {timestamp: "1390678800000",amount: "123",guaranteed: "False"};

我想要的是一个可以从info2中提取金额的正则表达式。

我有这个正则表达式

(?<=(info2((\s|=)+){.+amount:\s?")).*(?=",.*)

但不是234而是返回

234",guaranteed: "True"};var info3 = {timestamp: "1390510500000",amount: "345

我该如何解决?

由于

1 个答案:

答案 0 :(得分:1)

这是因为你在前瞻之前有一场贪婪的比赛。添加?以确保.*消耗尽可能少。我也逃过了{

(?<=(info2((\s|=)+)\{.+amount:\s?")).*?(?=",.*)

虽然你可能有RegexOptions.Singleline因为它应该可以正常工作(除非你的所有info都在实际代码中的同一行?)。

如果可能,我建议使用JSON解析器,而不是使用正则表达式。

相关问题