В первой статье мы прошлись по базовым вещам из которых составляются регулярные выражения и теперь можем перейти к более сложным и интересным вещам. Опережающая проверка X(?=Y) - грубо говоря, найди X за которым стоит Y. X и Y могут быть как чем-то конкретным, так и другими регулярными выражениями. Рассмотрим пример! У нас есть список почтовых адресов: Хотим получить часть строки до @, и окончанием .ru .+ - часть которая нам нужна, остальное это опережающая проверка, которая проверяет, что мы работаем с почтовым адресом (наличие @) и он оканчивается на .ru Ретроспективная проверка В общем-то, это то же самое, но в другую сторону: (?<=Y)X - находит X перед которым стоит Y. К сожалению, параметры поиска должны быть точными - вы должны знать длину строки перед X. Ретреспективная проверка не поддерживает выражения без фиксированной длины: Отрицание Для вышеописанных проверок существуют "отрицающие" варианты: Заключение Безусловно, данные проверки можно заменить базовыми конструкциями, од