Предпросмотр в регулярных выражениях является иной раз довольно сложной темой для новичков и потому не часто используемой. Хотя нужно сказать, что в некоторых случаях это довольно удобный и незаменимый инструмент.
Предпросмотр имеет синтаксис (?<=выражение)
, постпросмотр (предпросмотр назад) — (?=выражение)
Рассмотим на примере поиска адреса e-mail:
(?<=<)\w+@\w+.\w+(?=>)
Попробуйте проверить на следующем примере:
sfsf s<sfs@x.e> sfsf s<sfs@x> sfsf s
Здесь адреса e-mail скрыты в знаки больше меньше. Выражение (?<=<)\w+@\w+.\w+(?=>)
позволяет нам взять значение между этими знаками, минуя их, но учитывая в поиске, что является особенно ценным в парсинге xml/html и прочих подобных форматах.
Это был пример позитивного предпросмотра. Но бывают так же случаи и негативного просмотра, когда нам надо исключить какое-то сочетание, не входящее в исходную поисковую фразу. В этом случае вместо знака равно =
в выражении ставится восклицательный знак !
Полезные ссылки
от