Я пытаюсь получить строку после разделителя до конца строки с PHP и preg_match. Это мои коды:Получить строку после разделителя до конца строки
<?php
$stringa = <<<EOT
var1=Ciao
var2=Variabile
var3=We
EOT;
preg_match("#var2=(.*?)\n#", $stringa, $boh);
print_r($boh);
?>
Это работает, но не для последней строки, если я заменю переменная2 с var3 в регулярном выражении сгенерированный массив будет пустым.
Может кто-то объяснить семантику знака вопроса в '' Я знаю, что '' означает «факультативный», как в '{0,1}' или '(xxx |)', но я никогда не видел, чтобы он использовался после '*'. Это относится ко всему выражению '. *'? Если да, то это не избыточно, так как '*' может совпадать с 0 вхождениями? –
@PeterAlfvin - '' 'может следовать за любым квантором, чтобы сделать этот квантификатор _non-greedy_. (Вы можете найти этот термин.) Короче говоря, он инструктирует квантификатор, чтобы он совпадал с несколькими экземплярами как возможно [в отличие от _в многих случаях как возможно, что является поведением по умолчанию). Например, '*?', '+?', '??', '{2,5}?' - все не жадные версии соответствующих кванторов. –
@ acheong87 - Спасибо! –