Тема: LXF139/140 янв 2011 - Регэкспы (с.84-87)
Замысел статьи "Программируем: регэкспы" хороший.
Исполнение - не очень.
Во-1-х, слабенькие и какие-то "абстрактные" примеры. (Ну, это к Грэму Моррисону)
Во-2-х, не слишком удачный перевод. Как-то "коряво" по-русски изложено. Постоянно "спотыкаешься" при чтении.
Теперь - конкретно:
"Причудливая смесь символов, букв и цифр вдруг образует всемогущее заклинание, превращающее свинец в золото, а имена файлов - в каталоги."
Пользователи будут очень счастливы...
"Вам будут уже знакомы некоторые концепции, лежащие в основе регулярных выражений, потому что они напоминают использование спецсимволов в маске файла."
Здесь претензии к стилю. "Не по-русски" написано. Понять смысл можно, но...
"То же справедливо и для регулярных выражений, в которых символы для фильтров и процессов используются для построения модульного решения."
А вот здесь уже смысл "не виден". Это про что? Здесь - "догадайся сам". Новички точно не поймут.
"Знак доллара соответствует символам в конце входной строки..."
Это неверно. Знак доллара соответствует позиции ("признаку") конца строки.
Дж.Фридл "Регулярные выражения. Библиотека программиста" (стр.30):
"Специфика символов ^ и $ заключается в том, что они совпадают с определённой позицией строки, а не с символами текста."
Та же ошибка - во врезке в нижней части страницы "Актёры и роли".
Про команду tr написано весьма расплывчато. "Вводит понятие списка" - а для чего?
Почему бы не уточнить, что "наиболее общим случаем применения утилиты tr является замена каждого символа первой строки (списка) соответствующим ему символом второй строки (списка)" (Тим О'Рейли)
И пример немного странный (это мелочь, но всё же!). Зачем усложнять:
cat file.txt | tr '[(abc|dog)]' '[efg]' > file_tr.txt
если можно написать проще:
tr '[(abc|dog)]' '[efg]' < file.txt > file_tr.txt
без вызова "лишней команды" cat и создания конвейера.
"Полюбопытствуем фрагментами регулярного выражения в скобках..."
Очень "своеобразный" стиль. Никогда не встречал такого. Попытался "полюбопытствовать фрагментами" - не получилось.
Перечислил только самые "яркие" образцы. В статье есть ещё более мелкие погрешности и несуразности.
PS: И почему-то в статье не упоминается книга Дж.Фридла "Регулярные выражения. Библиотека программиста". Даже прочтение 1 и 2 глав этой книги даст пользователю несравненно больше, чем критикуемая статья. Да и изложение в книге гораздо проще и понятнее.