php preg_match 不贪婪?

2022-08-30 15:16:43

我有一个字符串(来自文件):

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)


答案 1

在量词之后添加,使其不合格。在这种情况下,您的正则表达式将是 。?.*?\n

要专门匹配以“概述:”开头的行,请使用以下正则表达式:

/^Overview:\s.*$/im

该修饰符允许并匹配行的开头和结尾,而不是整个搜索字符串。请注意,没有必要让它变得不greedy,因为除非你使用修饰符,否则不匹配换行符 - 事实上,在这里让它变得不greed将不利于性能。m^$.s


答案 2

推荐