正则表达式帮助,需要删除"表"项目

时间:2017-04-12 15:00:58

标签: regex

"foo" { 
    foo = "bar"
    foo2 = "bar2"
    foo3 = "bar3"
    foo4 = "bar4"
    id = "1"
    foo5 = "bar5"
}
"foo" { 
    foo = "bar"
    foo2 = "bar2"
    foo3 = "bar3"
    foo4 = "bar4"
    id = "2"
    foo5 = "bar5"
}
"foo" { 
    foo = "bar"
    foo2 = "bar2"
    foo3 = "bar3"
    foo4 = "bar4"
    id = "3"
    foo5 = "bar5"
}
...

我有正则表达式用于通过他们的id选择这个表项,但它也会选择向前发送的所有内容,当我需要它时首先停止"}"被找到。而且我不知道如何防止这种情况。

我的正则表达式是:/^"(?P<title>[^"]*)"[^{]*{(?=(.*))(?=[^}]*\sid\s*=\s+"2"[^}])/ixsmg

https://regex101.com/r/xA9kG3/26

1 个答案:

答案 0 :(得分:1)

.*耗费太多。你需要告诉它在第一场比赛时停止并告诉它匹配的基础。

^"(?P<title>[^"]*)"[^{]*{
                    (?=(.*?}))
                    (?=[^}]*\sid\s*=\s+"2"[^}])

这会让它停在第一个}。如果你在这个字符串结构中有{},那么这将不起作用。

演示:https://regex101.com/r/xA9kG3/27