正则表达式选项 - 没有递归正则表达式

时间:2012-10-12 01:19:36

标签: c# regex

我正在尝试使用System.Text.RegularExpressions.Regex类从JSON字符串中获取一些文本。刺痛就像是

[{"name":"joe","message":"hello","sent":"datetime"}{"name":"steve","message":"bye","sent":"datetime"}]

我正在尝试使用Matches()方法来获取“消息”值。但是,将匹配指定为类似message":"*","sent的模式将返回3个匹配项:

hello
bye
hello","sent":"datetime"}{"name":"steve","message":"bye

如何构造选项或修改模式以排除递归正则表达式检查?我只想要比赛

hello
bye

2 个答案:

答案 0 :(得分:1)

JSON工具可以更好地解析JSON。

例如,您可以尝试使用非贪婪语法.*?

答案 1 :(得分:1)

JavaScriptSerializer类(命名空间System.Web.Script.Serialization,程序集System.Web.Extensions.dll)对于处理这样的JSON字符串非常有用。

var json = "[{\"name\":\"joe\",\"message\":\"hello\",\"sent\":\"datetime\"},{\"name\":\"steve\",\"message\":\"bye\",\"sent\":\"datetime\"}]";

var serializer = new JavaScriptSerializer();
var result = serializer.Deserialize<object[]>(json);

// now have an array of objects, each of which happens to be an IDictionary<string, object>
foreach(IDictionary<string, object> map in result)
{
    var messageValue = map["message"].ToString();
    Console.WriteLine("message = {0}", messageValue);
}