2014-11-05 3 views
0

Есть ли способ инвертировать выбор RegEx?RegEx: Инвертировать выбор

У меня есть следующие строки пример:

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-теги ИЛИ Handlebar-теги.

Мой подход состоял в том, чтобы выбрать HTML/Handlebar-теги, а затем инвертировать выделение. RegEx для этого выглядит так:

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

Но я просто не могу найти способ инвертировать это. Есть ли другой способ?

+2

[Вы не можете разобрать (X) HTML с регулярным выражением.] (Http://stackoverflow.com/a/1732454/1529630) – Oriol

+0

Что @Oriol сказал , Напишите простой парсера парсера и пропустите эти данные вместо того, чтобы пытаться использовать regexp для этой цели. –

+0

Даже ваше исходное регулярное выражение неверно, поскольку оно будет потребляться от '<' до последнего '>' в строке и выходит за пределы тега. Другой '{{. *}}' Работает только в том случае, если в строке есть только 1 экземпляр. – nhahtdh

ответ

0

матч в группе 1

(?:<.*?>|\{\{.*?}})|([^{}<>]*) 
Смежные вопросы