我有以下示例。
正则表达式:
'/test=([0-9]*).*?marker/'
测试字符串:
test=1234 test=5678 unknown marker
匹配组返回:
1234
如何修改正则表达式以返回5678
最接近标记的值?
谢谢
编辑:我已经更新了这个例子。对困惑感到抱歉。未知可以是任何东西
我有以下示例。
正则表达式:
'/test=([0-9]*).*?marker/'
测试字符串:
test=1234 test=5678 unknown marker
匹配组返回:
1234
如何修改正则表达式以返回5678
最接近标记的值?
谢谢
编辑:我已经更新了这个例子。对困惑感到抱歉。未知可以是任何东西
$str = 'test=1234 test=5678 marker';
preg_match('/test=(\d+)\smarker/', $str, $matches);
echo $matches[1]; //=> 5678
这两个正则表达式中的任何一个都可以工作:
$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"