2014-01-21 71 views
0

我想在HTML中使用正則表達式匹配一些自定義生成的客戶端模板的大括號。我已經得到它的工作,除了在一種情況下有兩個或更多匹配的字符串相鄰。正則表達式匹配連續大括號

我想匹配的字符串是:

{{+ANYTEXT}} 

正在使用的正則表達式是:

{{\s*\+\S*\s*}} 

下面這個例子:

<div class="rows"> 
    {{#Rows}} ssss1212XXXX {{+Anything.More.Evenmore}}$ssds {{/Rows}} 
</div> 
<div class="actions"> 
    {{#Actions}} ss[{{+UI.Action1}} {{+UI.Action2}} sdfsf {{/Actions}} 
    {{#Actions}} sss{{+UI.Action3}}{{+UI.Action4}} sdfsf {{/Actions}} 
</div> 

匹配的第一個實例: {{+ Anything.More.Evenmore}};接下來的2個動作作爲單個匹配,Action1和Action2 但是將最後2個動作匹配爲一個匹配。

所以我試圖找出如何匹配{{+ ANYTEXT}}除}和{任何一端,但不包括他們在比賽中。不幸的是我失敗了。任何幫助非常感謝。

+0

使用解析器,而不是正則表達式,你的許多問題將得到解決。 – Reeno

回答

2

您可以使用正則表達式:

({{\s*\+[^}]*\s*}}) 

DEMO

說明:

enter image description here

Fiddle Demo

+0

這太棒了 - 它完美的作品。謝謝! –

1

\S*添加一個問號,使其不那麼貪婪並且有效。 Test

/{{\s*\+\S*?\s*}}/g 
+0

這也適用 - 前面的答案和效率方面的答案是否有區別? –

+0

忽略上面答案中不需要的括號匹配,我不這麼認爲。 – MildlySerious