php - 在正则表达式 (php) 方面需要一些帮助

标签 php regex

例如,我有以下代码:

$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/

相关文章:

php - html和主流浏览器支持的不同视频格式

javascript - 如何使用滚动加载自动完成数据

c# - 使用正则表达式逐字符检查

正则表达式模式 - 排除部分字符串

php - laravel 中的 mysql 查询突然不起作用

javascript - angularjs 中未定义的 URL ID

regex - 使用sed删除不匹配的部分

java - 分隔符的正则表达式

c# - 正则表达式删除特殊/不可见字符

php - 在 PHP 中使用 HTML 编号实体计算字符串的长度