Forum Webscript.Ru
Программирование => PHP => Тема начата: vg2k от 03 Августа 2005, 02:27:53
-
Нужна помощь с регулярками, а то не фурычит опять банальная вещь..
$str = \'sok 1 sok 2 sok 3 konec\';
preg_match_all(\'/sok(.*?)konec/i\',$str,$out);
print_r($out);
В выходящем массиве $out я хочу получить числов 3 из строки (пускай и с пробелами, их потом от-trim-ить легко). Однако получаю 1 sok 2 sok 3, как указать чтобы бралось максимальное удаленное от начала строки совпадение ? А то моя регулярка работала бы хорошо если бы исходная строка была : sok 3 konec 2 konec 1konec ибо жадность квантификатора убираю для последующих символов, а не для начальных . Что делать ?
PS. А то самое дурное пока пришло в голову, типа /([\\ 0-9]{0,3}sok){3}(.*?)konec/i
Однако это больше для частного случае подходит, нежели в целом...
Еще как варинат тут : /([0-9])+\\skonec/ , но это то же не выход. Тут(в этом топике) я представлял пример строки $str , на самом деле вместо искомой тройки там строка из цифр, букв и спецсимволов... длина строки от 8-20 символов в среднем... нужно нечто более универсальное
-
vg2k
$a = explode(" ",$str);
$out = $a[(count($a)-1)];
И не изобретать геморрой.
-
CGVictor , вау.. =) вылупил глаза и офигевал долго.
Просто у меня в этом заключалась часть регулярки, поэтому теперь одна половина обрезаеться регуляркой а другая таким незамысловатым методом.
PS. Ты гений ! ;)
-
vg2k
Ничго подобного :)