Я искал значение этих выражений, но не мог понять точного различия между ними. Это то, что они говорят:
-
?:
Сопоставить выражение, но не записывать его. -
?=
Сопоставьте суффикс, но исключите его из захвата. -
?!
Соответствует, если суффикс отсутствует.
Я попытался использовать их в простой RegEx и получил похожие результаты для всех. Пример: следующие 3 выражения дают очень похожие результаты.
-
[a-zA-Z0-9._-][email protected][a-zA-Z0-9-]+(?!\.[a-zA-Z0-9]+)*
-
[a-zA-Z0-9._-][email protected][a-zA-Z0-9-]+(?=\.[a-zA-Z0-9]+)*
-
[a-zA-Z0-9._-][email protected][a-zA-Z0-9-]+(?:\.[a-zA-Z0-9]+)*