Многолинейный поиск регулярных выражений Netbeans - PullRequest
14 голосов
/ 04 августа 2010

Я пытаюсь найти все теги ввода HTML с типом «текст» внутри Netbeans 6.9.

Поддерживает ли Netbeans поиск строки с использованием регулярных выражений с разными критериями поиска, распределенных по нескольким строкам, или он работает только в одной строке?

Это регулярное выражение

<input.*type=['"]text['"].*/>

работает, когда весь тег и его атрибуты записаны в одну строку, как это

<input name="data[something]" id="some_id" value="some_value" type="text" />

Но поскольку я избегаю писать длинные строки кода и разбиваю их как таковые

<input name="data[something]" id="some_id"
       value="some_value" type="text" />

такое же регулярное выражение не работает.

Есть ли способ, которым это может быть достигнуто?

1 Ответ

23 голосов
/ 04 августа 2010

По умолчанию метасимвол . не соответствует символу новой строки. Должна быть опция с именем «Однострочный» или «DOTALL» или аналогичная, которая позволяет точке соответствовать каждому символу. Или вы можете добавить (?s) в начало регулярного выражения и получить тот же эффект только для этого регулярного выражения.

Но было бы лучше заменить .* на [^<>]*. В режиме DOTALL .* будет пытаться сожрать весь остальной документ, что приведет к снижению производительности и / или неправильным совпадениям, но [^<>]* никогда не будет пытаться найти совпадения после конца тега.

Кстати, если вы используете ['|"] для совпадения с одинарной или двойной кавычкой, избавьтесь от |. «ИЛИ» подразумевается в классе символов, поэтому вам нужно только ['"] (| будет просто соответствовать буквальному |).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...