正则表达式在两个字符之间获取最里面的文本

时间:2015-04-22 10:12:25

标签: regex c#-4.0

我正在寻找一个正则表达式来获取最里面的括号之间的文本。

    {"object":"user","entry":[{"uid":"823602904340066","id":"823602904340066","time":1429276535,
"changed_fields":["feed"]}]}

    `{"uid":"823602904340066","id":"823602904340066","time":1429276535,
"changed_fields":["feed"]}`

应该出现?有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用以下基于否定字符类的正则表达式。

@"\{[^}{]*\}"

DEMO

[^}{]*否定了符合任何字符但不符合{}的字符类,零次或多次。

答案 1 :(得分:0)

您可以检查我们是否已经在第一个{}组中,然后在C#中使用平衡组构造,以确保我们获取第一级嵌套{}

(?<=\{[^\}]*)\{
    (?>
        ([^{}]+) 
        |    \{ (?<number>)
        |    \} (?<-number>)
    )*
    (?(number)(?!))
\}

将其与Ignore White选项一起使用。

在Expresso中测试:

enter image description here

虽然我可能过于复杂,但您可能没有第二级嵌套{}