正则表达式匹配括号中的文本

时间:2014-10-09 18:30:02

标签: regex

我想找到一个字符串中用括号括起来的本地化文本。

{{de:German}{en:English}}, {{de:German2}{en:English2}}

所以对于上面的例子,我希望找到两个!本地化字符串。

我使用以下正则表达式。

\{\{.+\}\}

结果我只找到一个文本匹配,但不是预期的两个匹配。 那我在这里做错了什么?

预期比赛:

First match  -> {{de:German}{en:English}}
Second match -> {{de:German2}{en:English2}}

感谢您的帮助

4 个答案:

答案 0 :(得分:1)

.+默认为贪婪。它将尽可能多地匹配。您的匹配与整条线匹配,因为该线以两个闭合的花括号结束。

要使其不贪心,请附加?

\{\{.+?\}\}

这适用于大多数正则表达式引擎。由于您未指定使用的是哪种,因此我无法更具体。

答案 1 :(得分:1)

让它变得非贪婪:

(\{\{.+?\}\})

RegEx Demo

答案 2 :(得分:1)

因为正则表达式中的+运算符是"贪婪",意思是,它将匹配尽可能多的字符。试试这个正则表达式:

\{\{.+?\}\}

有关"贪婪的更多信息"和"懒惰"在正则表达式中, 读: http://www.regular-expressions.info/repeat.html

答案 3 :(得分:0)

({(?:{[^}]*})*})

试试这个。看看演示。

http://regex101.com/r/xT7yD8/1