Ответ 1
Это будет короткий ответ.
При использовании (?:)
это означает, что group
сопоставляется, но не записывается для обратной ссылки i.e не захватывающей группы. Он не хранится в памяти для ссылки позже.
Например:
(34)5\1
Это регулярное выражение означает, что вы ищете 34
, а затем 5
, а затем снова 34
. Определенно вы можете записать его как 34534
, но иногда captured group
представляет собой сложный шаблон, который вы не могли предсказать заранее.
Значит независимо сопоставляется группа захвата.
Демо-версия Regex101 для обратных ссылок
Обратная ссылка также используется при замене.
Пример:
([A-Z]+)[0-9]+
Это регулярное выражение будет искать many
строчные буквы, за которыми следуют цифры many
. И я хочу заменить весь этот шаблон только найденными строчными буквами.
Затем я бы заменил весь шаблон, используя \1
, который обозначает обратную ссылку первая захваченная группа.
Если вы перейдете на (?:[A-Z]+)[0-9]+
, это больше не будет зафиксировать и, следовательно, не может быть возвращено.