如何编写正则表达式来检测括号内的单词?我没有工作。 (给出的例子)

时间:2014-10-07 19:59:11

标签: ruby regex

如果单词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行得到了一个错误的匹配。

3 个答案:

答案 0 :(得分:0)

我能找到最直接的方式:

\{[^{]*apple\}

,即单个开放{,可选地后跟 },以及短语apple}

答案 1 :(得分:0)

您可以使用此正则表达式:

\{[^}]*?apple[^}]*\}

Ruby RegEx Demo

答案 2 :(得分:0)

实际上,如果我做对了,那么" apple"可以在{}内的任何位置,因此正确的正则表达式是:

/\{[^\}]*apple.*\}/