Php preg_match не жадный?

У меня есть строка (из файла):

ILX (New for 2013!)

Overview: The least expensive route to Honda 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 premium-label goodness)). Каков наилучший способ достичь этого.

Я пробовал. *\n, но это будет соответствовать всем, а затем новой строке. Есть ли способ сделать регулярное выражение неживым?

Я пробовал: preg_match('/^Overview:\s.*$/im', $writeup, $overall_matches), и я не получаю никаких совпадений

Ответы

Ответ 1

Добавьте ? после квантификатора, чтобы сделать его неровным. В этом случае ваше регулярное выражение будет .*?\n.

Чтобы точно соответствовать строке, начинающейся с "Обзор:", используйте это регулярное выражение:

/^Overview:\s.*$/im

Модификатор m позволяет ^ и $ соответствовать началу и концу строк вместо всей строки поиска. Обратите внимание, что нет необходимости делать его неразборчивым, поскольку . не соответствует символам новой строки, если вы не используете модификатор s - на самом деле, что делает его нелогичным здесь, было бы плохо для производительности.