2015-09-25 2 views
-1

Прежде всего, я посмотрел на различных регулярных выражений вопросы о SO, но я не мог понять, как решить мою проблему ...Регулярные выражения строк в группе

Цель состоит в том, чтобы построить RegEx что соответствует условию:

<(some charackters that are not '>')> 

Новые строки следует игнорировать.

Единственное, что я мог придумать это:

/<[^>\n]+>/ 

Это хорошо работает, пока один из символов &, г, т,;, \ п появляются в моей тестируемой строке. Я знаю, это из-за согласованного набора, который не соответствует этим символам. Как я могу определить, все, за исключением строки

'>' 

будет соответствовать?

Примеры:

< тест бла > спички, но тест < ИНГ > не соответствует ....

+0

Почему не просто '< [\ S \ s] *? > '? – OnlineCop

+0

У меня нет проблем с downvoting, но, пожалуйста, объясните, почему? Помогло бы каждому получить лучшие вопросы по SO –

ответ

3

я должен использовать отрицательное опережения утверждение.

< (некоторые charackters, которые не являются «>») >

&lt;(?:(?!&gt;).)*?&gt; 

Обратите внимание, что это не будет соответствовать новой строки, потому что мы все знаем, что точка не будет соответствовать разрывы строк.

или

< (некоторые charackters, которые не являются '>' или '<') >

&lt;(?:(?!&[lg]t;).)*?&gt; 
1

Поскольку . не охватывает несколько строк, вы можете использовать

/&lt;[\S\s]*?&gt;/ 

regex101 demo

Смежные вопросы