簡體   English   中英

需要一些正則表達式的幫助(php)

[英]Need some help with regular expressions (php)

例如,我有以下代碼:

$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+\))/

你的正則表達式有什么問題。*是貪婪的,並試圖匹配盡可能多的字母。

preg_match("#value.*?\((\d+)\)#is", $string, $result);

但是你可以通過使用負面類來加快速度:

preg_match("#value[^(]+\((\d+)\)#is", $string, $result);
.*?value.*?\((\d+)\).*

存在 *? 不情願的比賽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM