我根本不明白\G
锚点的作用。
如果我在/\G\d\d/
上执行1122aa33
,则会与11
和22
匹配。但是,当我在/\d\d\G/
上尝试1122aa33
时,它什么都不匹配。
有人可以启发我吗?
答案 0 :(得分:2)
\G
是anchor which matches the previous match position。
在第一遍中,\G
相当于\A
,它是字符串锚点的开头。由于\d\d\A
永远不会匹配任何内容(因为如何在字符串开头之前有两位数字?),\d\d\G
也永远不会匹配任何内容。
答案 1 :(得分:1)
它基本上匹配“上一个匹配”的结尾,它在正则表达式的第一次运行时被认为是字符串的开头。
换句话说,如果您在字符串/\G\d\d/
上运行1122aa33
两次,则第二次运行会在22
上返回匹配。
答案 2 :(得分:1)
根据this:
主播\ G匹配上一场比赛结束的位置。 在第一次匹配尝试期间,\ G以\ A的方式匹配字符串的开头。
现在,要真正回答你的问题:在你的第二个例子中,没有产生结果的那个,\ G不能匹配字符串的开头,因为你首先寻找两个数字,并且没有那个初始匹配,\ G也不会与其他任何东西相匹配。