Я просто не понимаю, что делает якорь \G.
\G
Если я выполню /\G\d\d/ на 1122aa33, оно будет соответствовать 11 и 22. Однако, когда я пытаюсь /\d\d\G/ на 1122aa33, это ничего не соответствует.
/\G\d\d/
1122aa33
11
22
/\d\d\G/
Может ли кто-нибудь просветить меня?
\G - это якорь , который соответствует позиции предыдущего совпадения .
На первом проходе \G эквивалентен \A, который является началом строкиякорь.Так как \d\d\A никогда не будет ничего совпадать (потому что как вы можете иметь две цифры до начала строки?), \d\d\G также никогда не будет ничего совпадать.
\A
\d\d\A
\d\d\G
Согласно это :
Якорь \ G соответствует позиции, где закончилось предыдущее совпадение. Во время первой попытки сопоставления \ G сопоставляет в начале строки, как это делает \ A.
Теперь, чтобы фактически ответить на ваш вопрос: Во втором примере,тот, который не дает результатов, \ G не может соответствовать началу строки, потому что вы сначала ищете две цифры, и без этого начального совпадения \ G также не будет соответствовать никому другому.
Ссылочная ссылка
Он в основном совпадает с концом «предыдущего совпадения», которое при первом запуске регулярного выражения считается началом строки.
Другими словами, если вы набрали /\G\d\d/ дважды в строке 1122aa33, второй запуск вернет совпадение 22.