正则表达式可以返回匹配项的位置吗?

时间:2014-12-07 17:28:20

标签: regex

我使用'tags'(不确定官方正则表达式术语)来识别与正则表达式的匹配。我可以在我正在搜索的文本块中指定匹配的开始/结束位置吗?

所以如果我在

中寻找“黄色”

我找到了一只黄色风筝

它会回来 开始:11 停止:17

https://regex101.com/r/rK8fV8/1

1 个答案:

答案 0 :(得分:0)

  

我认为可以使用php regex使用脚本调用它们   的preg_match。

没错。

<?php
$subject = 'I found a Yellow kite.';
if (preg_match('/(?<COLOR>(Red|Blue|Yellow))/', $subject, $matches, PREG_OFFSET_CAPTURE))
{
    $start = 1+$matches['COLOR'][1];
    $stop = $start+strlen($matches['COLOR'][0]);
    echo "Start: $start\nStop: $stop\n";
}
?>

使用PREG_OFFSET_CAPTURE$matches['COLOR']将返回

Array
(
    [0] => Yellow
    [1] => 10
)