PHP正则表达式获得第二组分组匹配

时间:2013-08-05 04:08:01

标签: php regex preg-match

我有以下示例。

正则表达式:

'/test=([0-9]*).*?marker/'

测试字符串:

test=1234 test=5678 unknown marker

匹配的组返回:

1234

如何修改正则表达式以返回与标记最接近的值5678

感谢

编辑:我已经更新了这个例子。对困惑感到抱歉。哪里不知道可以是什么

2 个答案:

答案 0 :(得分:1)

$str = 'test=1234 test=5678 marker';
preg_match('/test=(\d+)\smarker/', $str, $matches);
echo $matches[1]; //=> 5678

答案 1 :(得分:0)

这两个正则表达式中的任何一个都可以工作:

$s = 'test=1234 test=5678 unknown marker'; // input
if (preg_match('/test=(\d+)(?!.*?test=\d+)/', $s, $arr)) var_dump($arr[1]);
// OR
if (preg_match('/test=(\d+)\D*marker/', $s, $arr)) var_dump($arr[1]);

<强>输出:

string(4) "5678"
string(4) "5678"