Все задачи

Маленькие слабости

12 Jun 2013

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

Но однострочник

perl -i -pe 's/(.*)//' some-file.txt

сделал совсем не то, что хотелось программисту…

Подсказка

Показать

Если бы это были квадратные или фигурные скобки, тоже не получилось бы ничего хорошего. А с угловыми (<, >) было бы нормально.

Разоблачение

Показать

Скобки в регулярных выражениях Perl являются метасимволами, и служат для кластеризации и захвата группы символов. Для поиска символа скобки надо добавить обратную косую черту: \(, \)

На заметку: Хорошие текстовые редакторы подсвечивают синтаксические конструкции, в том числе обычные символы и метасимволы в регулярных выражениях раскрашивают разным цветом, и это очень удобно.

Вот примеры из консольного и графического vim’а на компьютере одного из авторов (обратите внимание на цвет простого текста, круглых и угловых скобок в регулярном выражении):

консольный vim

gvim

Впрочем, в однострочниках, запускаемых прямо из командной строки, подсветки синтаксиса обычно не предусмотрено :(