[。\ s] *忽略了点?

时间:2014-08-25 05:22:42

标签: php regex json

我试图在一些字符串化的json中匹配一个对象(因为一些不幸的服务器特定的PHP限制)。

我的尝试:/\{\s*"first":"first_entry_match"[.\s]*?\}/

这应匹配json中的第一个参数为&#34; first&#34;具有相应的值&#34; first_entry_match&#34;。在玩完之后,我发现.没有工作 - 使用[\s\w":,]走得很远,但我最终可能会遇到一些unicode,并希望简单地匹配< em>所有直到我到达我看到的第一个}

JSFiddle(我使用PHP,但这说明了问题。请注意,在我的情况下,我在json字符串中有换行符)

3 个答案:

答案 0 :(得分:4)

要将所有字符匹配到第一个}符号,请使用带有符号}的否定字符类,即。 [^}]*

/\{\s*"first":"first_entry_match"[^}]*\}/

DEMO

答案 1 :(得分:4)

您已将圆点放在括号中。点表示位于括号外的每个字符,在内部,它只代表点字符。

答案 2 :(得分:0)

请使用:

/\{\s*"first":"first_entry_match".*?\}/

.*?确保选择中没有}。 (非贪婪)

http://jsfiddle.net/DerekL/dbangys1/1/