2014-11-05 110 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组

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