2

我有以下示例。

正则表达式:

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

测试字符串:

test=1234 test=5678 unknown marker

匹配组返回:

1234

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

谢谢

编辑:我已经更新了这个例子。对困惑感到抱歉。未知可以是任何东西

4

2 回答 2

1
$str = 'test=1234 test=5678 marker';
preg_match('/test=(\d+)\smarker/', $str, $matches);
echo $matches[1]; //=> 5678
于 2013-08-05T04:10:44.200 回答
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"
于 2013-08-05T04:28:49.537 回答