$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,但到目前为止没有运气. 谢谢你的帮助.
解决方法:
.*是贪婪的,所以它会匹配尽可能多的字符,你想要的.*?这将匹配完成匹配所需的最小字符:
/(value).*?(\(\d+\))/