如果单词apple出现在圆括号中的任何位置({...}
),我想检测单词 apple 。这些括号可以嵌套。因此she ate an apple
不应该匹配,而she ate a {food:apple}
应该和she stole my {foods{apple}}
匹配。
我写了/\{[^{}]*?(?:\{apple?\})*?[^{}]*?\}/i
,但这与卷曲括号中出现的任何相匹配,我不知道如何修复它。
编辑:我正在使用Ruby。 在以下示例中:
This line with apple in it shouldn't match.
This line with ${the.word.apple} in it should.
This line with ${something.else} should not match.
只有第2行应匹配。我的问题是我在第3行得到了一个错误的匹配。
答案 0 :(得分:0)
我能找到最直接的方式:
\{[^{]*apple\}
,即单个开放{
,可选地后跟不 }
,以及短语apple}
。
答案 1 :(得分:0)
答案 2 :(得分:0)
实际上,如果我做对了,那么" apple"可以在{}
内的任何位置,因此正确的正则表达式是:
/\{[^\}]*apple.*\}/