我不太清楚
我在perldoc中读到:
正如示例所示:
然后它说:
如果你使用 \G 锚点,你将强制匹配从 22 开始,并以 a 结尾。
正则表达式无法匹配那里,因为它找不到数字,所以下一个匹配失败,匹配运算符返回它已经找到的一对内容。我也不理解这句话:"如果您使用\G锚定,您会强制在22之后进行匹配,并以a开头"。但是没有\G,匹配也会在a处尝试吗?那么这个句子的含义是什么呢?我看到在示例中只打印11和22这两个数字对。所以44没有尝试。示例还显示,使用c选项将在while之后索引44。老实说,通过所有这些,我无法理解该运算符的用处和何时应用它。可以有意义的例子帮助我理解吗?更新:我认为我没有理解这个关键句子:如果您使用\G锚定,您会强制在22之后进行匹配,并以a .正则表达式无法在此处进行匹配,因为它没有找到数字,因此下一个匹配失败并且匹配运算符返回它已经找到的数字对。这似乎意味着当匹配失败时,正则表达式不会进一步尝试,并且与答案中的示例一致。另外:在字母a处匹配失败后,perl将重置pos(),同一字符串的下一个匹配从开头开始。
\G
操作符的使用/需要。我在perldoc中读到:
我真的不理解这个说法。当我们使用您可以使用\G锚定在上一次匹配结束的字符串上开始下一次匹配。
\g
时,通常会移动到上一个匹配后的字符。正如示例所示:
$_ = "1122a44";
my @pairs = m/(\d\d)/g; # qw( 11 22 44 )
然后它说:
如果你使用 \G 锚点,你将强制匹配从 22 开始,并以 a 结尾。
$_ = "1122a44";
my @pairs = m/\G(\d\d)/g;
正则表达式无法匹配那里,因为它找不到数字,所以下一个匹配失败,匹配运算符返回它已经找到的一对内容。我也不理解这句话:"如果您使用\G锚定,您会强制在22之后进行匹配,并以a开头"。但是没有\G,匹配也会在a处尝试吗?那么这个句子的含义是什么呢?我看到在示例中只打印11和22这两个数字对。所以44没有尝试。示例还显示,使用c选项将在while之后索引44。老实说,通过所有这些,我无法理解该运算符的用处和何时应用它。可以有意义的例子帮助我理解吗?更新:我认为我没有理解这个关键句子:如果您使用\G锚定,您会强制在22之后进行匹配,并以a .正则表达式无法在此处进行匹配,因为它没有找到数字,因此下一个匹配失败并且匹配运算符返回它已经找到的数字对。这似乎意味着当匹配失败时,正则表达式不会进一步尝试,并且与答案中的示例一致。另外:在字母a处匹配失败后,perl将重置pos(),同一字符串的下一个匹配从开头开始。