正则表达式中'\ 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中也是如此。
以上是 正则表达式中'\ G'锚的用途是什么? 的全部内容, 来源链接: utcz.com/qa/404148.html