Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Метасимвол "\G" впервые появился в Perl и предназначался для проведения глобального поиска с модификатором /g (…79). Он совпадает с позицией, в которой завершилось предыдущее совпадение. При первой итерации "\G" совпадает только в начале строки, как и метасимвол "\A". Если попытка поиска завершилась неудачей, позиция "\G" возвращается в начало строки. Таким образом, при многократном применении регулярного выражения (как при использовании команды "s/…/…/g" или других средств глобального поиска) неудача при очередном поиске приводит к сбросу позиции "\G" для применения следующего выражения.
В Perl метасимвол "\G" обладает тремя уникальными особенностями, которые мне кажутся весьма интересными и полезными.
• Позиция, связанная с "\G", является атрибутом целевой строки, а не регулярного выражения. Это позволяет последовательно применить к строке несколько регулярных выражений, причем метасимвол "\G" в каждом из них продолжит поиск с той позиции, на которой он был прерван для предыдущего выражения.
• Операторы регулярных выражений Perl поддерживают модификатор /c (…380), при помощи которого можно указать, что в случае неудачного поиска позиция "\G" не сбрасывается, а остается в последней позиции. В сочетании с первым пунктом это помогает организовать проверку по нескольким регулярным выражениям с одной позиции целевого текста, которая смещается только при обнаружении совпадения.
• Текущую позицию метасимвола "\G" можно получить и изменить с использованием средств, не имеющих отношения к регулярным выражениям (функция pos …378). Например, ее можно задать так, чтобы поиск начинался с заданной позиции. Кроме того, поддержка этой возможности в языке позволяет имитировать функциональность предыдущего пункта, если она не поддерживается напрямую.
Примеры практического использования этих возможностей приводятся во врезке на следующей странице. Несмотря на наличие этих удобных возможностей, у метасимвола "\G" в Perl имеется недостаток – он работает надежно лишь в том случае, если находится в самом начале
регулярного выражения. К счастью, именно там он используется наиболее естественным образом.
 
Конец предыдущего или начало текущего совпадения?
Одно из различий между реализациями определяется тем, с чем же в действительности совпадает "\G" – с началом текущего или с концом
предыдущего совпадения? В подавляющем большинстве случаев это одно и то же, но в некоторых редких случаях эти две позиции могут
различаться.
...
и т.д.
Джефри Фридл "Регулярные выражения"

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:04 03-08-2018 | Исправлено: YuS_2, 17:55 03-08-2018
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru