2013-02-19 172 views
17

我有一個字符串(從文件):php preg_match非貪婪?

ILX (New for 2013!) 

Overview: The least expensive route to Honda's premium-label goodness 

Drivetrain: Two four-cylinder engines to choose from as well as a gas-electric hybrid; front-wheel-drive only. 

我如何得到字符串:

$writeup = file_get_contents($car_files_path . $manufacture . '/Stories/'.$story); 

我想匹配概述線(Overview: The least expensive route to Honda's premium-label goodness)什麼是實現這一目標的最佳途徑。

我試過了。* \ n,但會匹配一切,然後一個新行。有沒有一種方法,使正則非貪婪?

我公頃已經試過: preg_match('/^Overview:\s.*$/im', $writeup, $overall_matches),我沒有得到任何比賽

+3

非貪婪是'。*?'http://www.regular-expressions.info/repeat.html – 2013-02-19 21:12:11

+0

我有點困惑你想匹配..只是用整條線是什麼單詞'Overview'在裏面,換行符?什麼是你的實際正則表達式? – 2013-02-19 21:12:15

+0

我試圖用概述整條生產線相匹配: – 2013-02-19 21:12:44

回答

30

量詞後添加?,使之ungreedy。在這種情況下,你的正則表達式將是.*?\n

要專門匹配開頭的行「概述」,用這個表達式:

/^Overview:\s.*$/im 

m修飾符允許^$到線,而不是整個搜索字符串的開始和結束匹配。請注意,沒有必要讓它ungreedy因爲.,除非您使用s修飾符不匹配換行符 - 事實上,使其ungreedy這裏將是糟糕的性能。

+0

我忘了,包括字符串的一部分。請參閱更新 – 2013-02-19 21:31:06

+0

它應該仍然工作正常。 – 2013-02-19 21:31:40

+0

我還沒有得到任何比賽。查看更新 – 2013-02-19 21:32:58