Подтвердить что ты не робот

В регулярных выражениях, что такое обратная ссылка/обратная ссылка?

Что означает использование регулярного выражения backtracking?

Также вы могли бы привести пример этого?

4b9b3361

Ответ 1

Backreferences и backtracking - две разные вещи. Первый использует результаты захвата позже в коде, например.

(['"]).*?\1

Это будет соответствовать строке с одним или двумя кавычками (на данный момент игнорируется экранирование). Он использует обратную ссылку, чтобы ссылаться на открытый символ (одиночная или двойная кавычка), чтобы он соответствовал этому в конце.

Откат, с другой стороны, является тем, что регулярные выражения естественным образом происходят во время согласования, когда совпадение не выполняется. Например, если я сопоставляю выражение

.+b

для строки

aaaaaabcd

то сначала он будет соответствовать aaaaaabc на .+ и сравните b с оставшимся d. Это терпит неудачу, поэтому он немного отстает и соответствует aaaaaab для .+, а затем сравнивает окончательный b с c. Это также терпит неудачу, поэтому он снова возвращается и пытается aaaaaa для .+ и соответствует b по отношению к b и преуспевает.