Я пытаюсь немного ознакомиться с Perl, чтобы использовать его для поиска по регулярным выражениям в Terminal (Mac). Теперь я не очень стараюсь изучать Perl, просто пытаюсь выяснить, как сделать несколько простых регулярных выражений.
Но я не могу понять, как это сделать в терминале:
Я хотел бы иметь возможность сопоставлять выражения в несколько строк, и я возьму HTML- теги в качестве примера. ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, что HTML-тег - это всего лишь пример чего-то, что нужно сопоставить, и, в частности, то, что идет через несколько строк. Является ли соответствие HTML регулярным выражениям хорошей идеей или нет, это не проблема. Я просто хочу понять синтаксис сопоставления с Perl в командной строке!
Скажем, я хочу сопоставить весь тег ul здесь
<ul>
<li>item 1</li>
<li>item 2</li>
</ul>
Я бы хотел:
- Иметь возможность сопоставить это в файле и вывести совпадение на стандартный вывод (не спрашивайте почему, я просто хотел бы понять, как это работает :-))
- Уметь заменить это чем-то другим.
Для соответствия я нашел что-то вроде этого (используя «начало» и «конец» в качестве примера здесь из простого текстового файла, когда я тестировал, но, пожалуйста, приведите пример для тега ul
вместо этого:
perl -wnE 'say $1 if /(start(.*?)end)/' test.txt
Это соответствует части, но только в одной строке. Удивительно, но добавление s в конце не сработало, чтобы сделать его "точечным" или "однострочным", оно все равно соответствовало одной строке ...
Для замены я попробовал что-то вроде этого:
perl -pe 's/start(.*?)end/replacement text/'s test.txt
Это тоже не сработало ...