Что такое именованные группы захвата и lookahead/lookbehind?
УглублённыйРегулярные выражения
- Именованные группы:
(?<name>pattern) — захватывает совпадение и присваивает имя:
'2024-03-15'.match(/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/)?.groups → { year: '2024', month: '03', day: '15' }
- Lookahead (заглядывание вперёд):
- Positive:
(?=pattern) — совпадает, если за текущей позицией следует pattern
- Negative:
(?!pattern) — совпадает, если за текущей позицией НЕ следует pattern
- Lookbehind (заглядывание назад):
- Positive:
(?<=pattern) — совпадает, если перед текущей позицией есть pattern
- Negative:
(?<!pattern) — совпадает, если перед текущей позицией НЕТ pattern
- Lookahead и lookbehind не захватывают символы (zero-width assertions)