2014-11-05 108 views
0

有沒有反轉正則表達式選擇的方法?正則表達式:反轉選擇

我有以下字符串例如:

Hello World 

<h1>{{{title}}}</h1> 

No HTML 

<p>{{description}}</p> 

{{#each projects}} 
    <h2>{{#name}}</h2> 
    <bockquote><p>{{#quote}}</p></bockquote> 
    <p>{{#description}}</p> 
    <pre><code class="lang-javascript">{{{#code}}}</code></pre> 
{{/each}} 

我要選擇哪一個不是由HTML的標籤或車把標籤包圍的文本。

我的方法是選擇HTML/Handlebar-Tags,然後顛倒選擇。 RegEx爲此看起來像:

/<(.*)>|{{.*}}/ 

但我只是不能找到一種方法來顛倒這一點。 還有別的辦法嗎?

+2

[你無法解析(X)HTML用正則表達式。](http://stackoverflow.com/a/1732454/1529630) – Oriol 2014-11-05 01:05:08

+0

什麼@Oriol說。編寫一個簡單的令牌解析器並運行這些數據,而不是嘗試爲此使用regexp。 – 2014-11-05 01:07:45

+0

即使你的原始正則表達式不正確,因爲它會從一行中的'<'到最後一個'>'吃掉,並且超出標籤的邊界。另一個'{{。*}}'只適用於每行只有一個實例。 – nhahtdh 2014-11-05 02:22:27

回答

0

比賽是在第1組

(?:<.*?>|\{\{.*?}})|([^{}<>]*)