我想找到一个字符串中用括号括起来的本地化文本。
{{de:German}{en:English}}, {{de:German2}{en:English2}}
所以对于上面的例子,我希望找到两个!本地化字符串。
我使用以下正则表达式。
\{\{.+\}\}
结果我只找到一个文本匹配,但不是预期的两个匹配。 那我在这里做错了什么?
预期比赛:
First match -> {{de:German}{en:English}}
Second match -> {{de:German2}{en:English2}}
感谢您的帮助
答案 0 :(得分:1)
.+
默认为贪婪。它将尽可能多地匹配。您的匹配与整条线匹配,因为该线以两个闭合的花括号结束。
要使其不贪心,请附加?
:
\{\{.+?\}\}
这适用于大多数正则表达式引擎。由于您未指定使用的是哪种,因此我无法更具体。
答案 1 :(得分:1)
答案 2 :(得分:1)
因为正则表达式中的+运算符是"贪婪",意思是,它将匹配尽可能多的字符。试试这个正则表达式:
\{\{.+?\}\}
有关"贪婪的更多信息"和"懒惰"在正则表达式中, 读: http://www.regular-expressions.info/repeat.html
答案 3 :(得分:0)