Программирование > Регулярные выражения

[Опечатки] Книга Фридла "Регулярные выражения. Библиотека пргограммиста" издание 2

<< < (6/9) > >>

tserbis:
Скачал. Спасибо.
Перевод обязательно сделаю.
[OFF]не сегодня только; завтра или на следующей неделе[/OFF]

tri:
tserbis
Вот ещё положил текст из первого английского издания, может пригодится
_http://www.regexp.nm.ru/Mastering_Regular_Expressions_1Eds_pages70-72.rar
Тока он немного кривоватый. Похоже его на сафари ловили.

tserbis:
Скачал.

tserbis:
tri, а можешь ещё показать страницу 15 оригинала 2 издания
(на странице 17 есть ссылка на неё, я хочу посмотреть какой номер страницы будет соответсвовать ей в русском переводе)?

tserbis:
Пропущенный текст со страницы 38 (см. выше опечатку 7):

[OFF]это надо сохранить в htm файл и открыть его в браузере; регулярки выделены цветом (а не уголками, как в книге);[/OFF]




Пропущенный текст на странице 38. Перевод 2 издания. Фридл. Регулярные выражения.





• Инвертированный символьный класс представляет собой сокращённое обозначение обычного символьного класса, означающее все символы, кроме перечисленных. Следовательно, выражение [^x] означает не "всё что угодно, кроме x", а "любой символ, отличный от x". Различие тонкое, но важное. Например, в первой интерпретации совпадение будет найдено в пустой строке, чего быть не должно.



• Полезный ключ -i игнорирует различия в регистре букв при сравнении (стр.36).{стрелка вверх}

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

Необязательные элементы

Допустим, вам понадобилось найти слово color или colour. Эти два слова почти одинаковы, только в одном есть буква u, а в другом её нет. Регулярное выражение colou?r позволяет найти любой из этих вариантов. Метасимвол ? (вопросительный знак) означает "необязательный символ". Он ставится после символа, который может находиться в данной позиции текста, но наличие которого не требуется для успешного совпадения.

В отличие от других упоминавшихся метасимволов, вопросительный знак относится только к символу, расположенному непосредственно перед ним. Выражение colou?r интерпретируется как "c, затем o, затем l, затем o, затем u?, затем r".

Сопоставление u? с текстом всегда оказывается успешным: иногда ему соответствует символ u в тексте, иногда не соответствует. Собственно, главная особенность необязательного элемента ? состоит в том, что совпадение для него находится всегда. Это вовсе не означает, что совпадение будет найдено для любого регулярного выражения, содержащего метасимвол ?. Например, при поиске в строке semicolon будут найдены совпадения для colo и u? (соответственно colo и ничего). Тем не менее завершающее r не находится, из-за чего colou?r в конечном счёте и не совпадает в строке semicolon.

Рассмотрим другой пример. Представьте, что вам требуется найти дату - четвёртое июля, в которой месяц обозначается July или Jul, а число - fourth, 4th или просто цифра 4. Конечно, можно просто воспользоваться выражением (July|Jul)•(fourth|4th|4), но давайте рассмотрим другие варианты выражения той же идеи.

Во-первых, (July|Jul) сокращается до (July?). Вы видите, что это одно и то же? При удалении | круглые скобки перестают быть нужными. Вреда от скобок не будет, но без них выражение July? становится чуть более понятным. Получается July?•(fourth|4th|4).

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии