【发布时间】:2014-10-18 05:20:33
【问题描述】:
我正在尝试匹配某个字符串化 json 中的对象(因为一些不幸的特定于服务器的 PHP 限制)。
我的尝试:/\{\s*"first":"first_entry_match"[.\s]*?\}/
这应该匹配 json 中第一个参数为“first”且对应值为“first_entry_match”的任何对象。在玩了之后,我发现 . 不起作用 - 使用 [\s\w":,] 走得很远,但我可能最终会处理一些 unicode 并想简单地匹配 everything 直到我看到了第一个}。
JSFiddle(我使用的是 PHP,但这说明了问题。请注意,在我的例子中,我的 json 字符串中有换行符)
【问题讨论】:
-
这是在 JavaScript 中解析的吗?如果是这样,您是否知道可以将“reviver”函数传递给
JSON.parse,从而轻松定位每个"first"字段?我无法想象您实际上需要在整个 JSON 结构上使用正则表达式。 -
你真的想直接转到第一个
}吗?这不适用于{"first":"first_entry_match","second":{"x":"y"}}之类的东西。 -
所有值都是字符串,所以@TedHopp 不会成为问题。
-
@cookiemonster 我完全不使用javascript。只是没有 json_decode 或 json_encode 函数的 PHP
-
如果所有值都是字符串,那么 Avinash 的答案就是要走的路(前提是保证所有字符串都不包含
}字符)。