正则表达式中'\ G'锚的用途是什么?

我很难理解\G锚在PHP形式的正则表达式中的工作方式。

我倾向于认为(即使我可能错了),\G而不是^在发生相同字符串的多次匹配的情况下使用。

有人可以举一个\G应该如何使用的例子,并解释它如何以及为什么起作用吗?

回答:

强制模式仅返回作为连续匹配项链的一部分的匹配项。从第一个比赛开始,每个随后的比赛都必须在比赛之前。如果您打断链,比赛将结束。

<?php

$pattern = '#(match),#';

$subject = "match,match,match,match,not-match,match";

preg_match_all( $pattern, $subject, $matches );

//Will output match 5 times because it skips over not-match

foreach ( $matches[1] as $match ) {

echo $match . '<br />';

}

echo '<br />';

$pattern = '#(\Gmatch),#';

$subject = "match,match,match,match,not-match,match";

preg_match_all( $pattern, $subject, $matches );

//Will only output match 4 times because at not-match the chain is broken

foreach ( $matches[1] as $match ) {

echo $match . '<br />';

}

?>

这是直接从文档

反斜杠的第四种用法是用于某些简单的断言。断言指定匹配中特定点必须满足的条件,而不会消耗主题字符串中的任何字符。子模式用于更复杂的断言的描述如下。反斜杠断言是

 \G

first matching position in subject

仅当当前匹配位置位于匹配的起点(由preg_match()的offset参数指定)时,\ G断言才为true。当offset的值非零时,它不同于\ A。

http://www.php.net/manual/zh/regexp.reference.escape.php

您将不得不向下滚动该页面,但是确实存在。

在ruby中有一个很好的例子,但是在php中也是如此。

以上是 正则表达式中&#39;\ G&#39;锚的用途是什么? 的全部内容, 来源链接: utcz.com/qa/404148.html

回到顶部