例如,我有以下代码:
$string = "adf gggg eere value aaaa bbb (10) value
ddttt ggg www (20) value ddttt ggg www dddd (40) ";
preg_match("/(value).*(\(\d+\))/is", $string, $result);
var_dump($result[2]); // outputs 40.
我正在尝试获取第一个值 (10)。上面的代码输出 40 是有道理的,但不是我想要的。字符串模式是:单词“值”,然后是任意字符的数字,然后是“(”、整数、“)”。似乎我遗漏了一些明显的东西......我没有太多地使用正则表达式,但我相信它可以通过 ?<!value
以某种方式解决。 ,虽然到目前为止还没有运气。
感谢您的帮助。
最佳答案
.*
是贪心的,所以它会匹配尽可能多的字符,你想要 .*?
匹配完成匹配所需的最少字符:
/(value).*?(\(\d+\))/
关于php - 在正则表达式 (php) 方面需要一些帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6022756/