2014-10-26 5 views
0

Я строй быстрого хака в sublimetext (да, я знаю, что это не является оптимальным):Как выбрать все, кроме конкретного шаблона

У меня есть следующее регулярное выражение, которое выбирает весь код в <script></script> тегах:

<script[\s\S]*?\/script> 

Как я могу выбрать все, кроме этого, т. Е. Обратного этого/всего кода OUTSIDE script тегов?

\\\code i want to select 
<script> code i don't weant to select</script> 
/// code i want to select 

Я действительно ценю примеры как incluisve и эксклюзивные самих script тегов.

+1

Когда речь идет о регулярных выражений, иногда самый простой путь является наилучшим подходом. Вы можете попытаться написать сложное регулярное выражение, которое будет захватывать все EXCEPT для тегов скриптов, но вам может быть проще сначала захватить все, а затем использовать ваше рабочее регулярное выражение, чтобы просто вычеркнуть теги скрипта, оставив вас всем, кроме скриптовые теги. – radiovisual

+0

Очень верно, как бы я i) выбрать все, за которым следует ii) исключая мой шаблон в том же самом выражении? Спасибо – alias51

ответ

2

Включите режим DOTALL (?s) сделать точку, чтобы соответствовать новой строки символов также.

(?s)^.*?(?=<script>)|(?<=<\/script>).*$ 

DEMO

-1

Существует много подводных камней, использующих регулярное выражение для обработки html.

Рассмотрим, например, этот случай:

<input type="text" value="<script> code i don't weant to select</script>" /> 

Как вы справиться с этим с регулярным выражением?

Поэтому я бы рекомендовал использовать внешнюю библиотеку, выполняющую синтаксический анализ для вас. Google, которые доступны на вашем языке программирования. Вот некоторые я могу рекомендовать:

+0

Это не отвечает на вопрос, как это сделать в regex – alias51

+0

Да, это не отвечает на вопрос, но я хочу указать, что регулярное выражение в этом случае может вызвать некоторые проблемы и поэтому предлагает альтернативу. –

+0

@ alias51 на каком языке вы работаете? –

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