Назначение якоря \ G в регулярных выражениях - PullRequest
0 голосов
/ 07 августа 2010

Я просто не понимаю, что делает якорь \G.

Если я выполню /\G\d\d/ на 1122aa33, оно будет соответствовать 11 и 22. Однако, когда я пытаюсь /\d\d\G/ на 1122aa33, это ничего не соответствует.

Может ли кто-нибудь просветить меня?

Ответы [ 3 ]

2 голосов
/ 07 августа 2010

\G - это якорь , который соответствует позиции предыдущего совпадения .

На первом проходе \G эквивалентен \A, который является началом строкиякорь.Так как \d\d\A никогда не будет ничего совпадать (потому что как вы можете иметь две цифры до начала строки?), \d\d\G также никогда не будет ничего совпадать.

1 голос
/ 07 августа 2010

Согласно это :

Якорь \ G соответствует позиции, где закончилось предыдущее совпадение. Во время первой попытки сопоставления \ G сопоставляет в начале строки, как это делает \ A.

Теперь, чтобы фактически ответить на ваш вопрос: Во втором примере,тот, который не дает результатов, \ G не может соответствовать началу строки, потому что вы сначала ищете две цифры, и без этого начального совпадения \ G также не будет соответствовать никому другому.

1 голос
/ 07 августа 2010

Ссылочная ссылка

Он в основном совпадает с концом «предыдущего совпадения», которое при первом запуске регулярного выражения считается началом строки.

Другими словами, если вы набрали /\G\d\d/ дважды в строке 1122aa33, второй запуск вернет совпадение 22.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...