Значення округів - це твердження нульової ширини. Вони перевіряють регулярний вираз (вправо або вліво від поточної позиції - на основі вперед або ззаду), досягає успіху або не вдається, коли знайдеться відповідність (виходячи з того, якщо вона є позитивною чи негативною) і відкидає відповідну частину. Вони не споживають жодного символу - відповідність для регулярного вираження, що слідує за ними (якщо є), почнеться з тієї ж позиції курсору.
Прочитайте regular-expression.info для отримання більш детальної інформації.
Синтаксис:
(?=REGEX_1)REGEX_2
Збігаються лише у тому випадку, якщо збігається REGEX_1; після відповідності REGEX_1, відповідність відміняється і пошук REGEX_2 починається з тієї ж позиції.
приклад:
(?=[a-z0-9]{4}$)[a-z]{1,2}[0-9]{2,3}
REGEX_1 - [a-z0-9]{4}$
це збіг чотирьох буквено-цифрових знаків з наступним кінцем рядка.
REGEX_2 - [a-z]{1,2}[0-9]{2,3}
це відповідність однієї або двох букв з двома або трьома цифрами.
REGEX_1 гарантує, що довжина рядка дійсно становить 4, але не споживає жодних символів, тому пошук за REGEX_2 починається в тому самому місці. Тепер REGEX_2 гарантує, що рядок відповідає деяким іншим правилам. Без погляду вперед це відповідало б рядкам довжиною три-п’ять.
Синтаксис:
(?!REGEX_1)REGEX_2
Збігайте, лише якщо REGEX_1 не відповідає; після перевірки REGEX_1 пошук REGEX_2 починається з тієї ж позиції.
приклад:
(?!.*\bFWORD\b)\w{10,30}$
Частина, що дивиться вперед, перевіряє наявність FWORD
в рядку і не працює, якщо вона її знайде. Якщо він не знайдеться FWORD
, перспективний успіх виявляється успішним, і наступна частина підтверджує, що довжина рядка становить від 10 до 30 і що вона містить лише символи словаa-zA-Z0-9_
Вигляд позаду схожий на вигляд вперед: він просто дивиться за поточну позицію курсору. Деякі аромати регулярного вираження, як-от JavaScript, не підтримують твердження, що знаходяться позаду. І більшість ароматів, які його підтримують (PHP, Python тощо), вимагають, щоб частина, яка оглядається, мала фіксовану довжину.
- Атомні групи в основному відкидає / забуває наступні лексеми в групі, коли маркер збігається. Перевірте на цій сторінці приклади атомних груп