Для кращого розуміння давайте застосуємо три вирази плюс групу захоплення та проаналізуємо кожну поведінку.
() група захоплення - регекс всередині дужок повинен бути узгоджений і збіг створити групу захоплення
(?:) не захоплююча група - регулярний вираз у круглих дужках повинен відповідати, але не створює групу захоплення
(?=) позитивний погляд вперед - стверджує, що регулярний вираз повинен відповідати
(?!) негативний погляд вперед - стверджує, що неможливо зіставити регулярний вираз
Давайте звернемося q(u)iдо виходу . qвідповідає д і група захоплення uвідповідає U . Збирається сірник всередині групи захоплення і створюється група захоплення. Тож двигун продовжує с i. І iвідповідатиме i . Ця остання спроба матчу успішна. qui відповідає і створюється група захоплення з u .
Давайте звернемося q(?:u)iдо виходу . Знову ж , qвідповідає д і без захоплення групи uвідповідає U . Матч від групи, що не захоплює, береться, але група захоплення не створюється. Тож двигун продовжує с i. І iвідповідатиме i . Ця остання спроба матчу успішна. qui відповідає
Давайте звернемося q(?=u)iдо виходу . Показник позитивний і супроводжується іншим маркером. Знову qспівпадає q та uзбіг u . Знову-таки, відповідність з lookahead необхідно відмовитись, тому двигун відступає від iрядка до u . Шукати було успішно, тому двигун продовжує працювати i. Але iне може відповідати u . Тож ця спроба поєдинку провалюється.
Давайте звернемося q(?=u)uдо виходу . Показник позитивний і супроводжується іншим маркером. Знову qспівпадає q та uзбіг u . Збіг від lookahead необхідно відмовитись, тому двигун відступає від uрядка до u . Шукати було успішно, тому двигун продовжує працювати u. І uбуде відповідати u . Тож ця спроба поєдинку успішна. qu відповідає
Давайте звернемося q(?!i)uдо виходу . Навіть у цьому випадку lookahead є позитивним (тому iщо не відповідає) і супроводжується іншим маркером. Знову ж, qвідповідає q і iне відповідає u . Збіг від lookahead необхідно відмовитись, тому двигун відступає від uрядка до u . Шукати було успішно, тому двигун продовжує працювати u. І uбуде відповідати u . Тож ця спроба поєдинку успішна. qu відповідає
Отже, підсумовуючи, про реальну різницю між групами пошуку та невловими справами є все, якщо ви хочете просто перевірити існування чи перевірити та зберегти відповідність. Захоплення групи дорого, тому використовуйте їх розумно.