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
- на самом деле, что делает его нелогичным здесь, было бы плохо для производительности.