Forum Webscript.Ru
Программирование => Perl => Тема начата: от 15 Мая 2002, 10:41:05
-
Кому не трудно помогите!
Есть текстовая строка произвольной длинны.
В ней переодически встречается следующая комбинация
служебное_слово1 описание произвольной длинны служебное_слово2
то есть, между парой служебных слов идет описание произвольной длинны которое мне и нужно получить в чистом виде.
пары служебное_слово1 и служебное_слово2 по всей строке одинаковы. описание разное, произвольной длинны.
-
Так что нужно? в переменную занести все что между служебными словами? Какой формат служебных слов?
Подробнее. Примеры приветствуются.
-
Уже подсказали. Сорри за беспокойство.
-
$MyWordA = \'myc00lwordA\';
$MyWordB = \'myc00lwordB\';
$StringWithVariablesAndc00lWords = "тут твоя строка";
$StringWithVariablesAndc00lWords =~ s/.+($MyWordA)//g;
$StringWithVariablesAndc00lWords =~ s/($MyWordB)+.+//g;
print "$StringWithVariablesAndc00lWords ";
-
SteelRat
Если использовать такой вариант, то вместо плюсов здесь:
=~ s/.+($MyWordA)//g;
и здесь:
.+//g;
нужно ставить * ;)
-
наверное...
Странно, я думал, что конструкция \'.+\' означает любую последовательность.... Покопаю доки. Хм.
-
$stop1=\'lala\';
$stop2=\'toto\';
if ($text=~/$stop1(.*?)$stop2/){$spec_var=$1;}
Если же в строке планируется несколько таких комбинаций со служ. словами, то можно так:
$stop1=\'lala\';
$stop2=\'toto\';
while ($text=~/$stop1(.*?)$stop2/g){(push @spec_vars, $1);}
ну а потом разобраться с массивом @spec_vars
Уже подсказали. Сорри за беспокойство.
;) а мы тоже не жадины какие-нибудь!
-
Green Kakadu
if ($text=~/$stop1(.*?)$stop2/){$spec_var=$1;}
А это можно записать короче:
$spec_var=($text=~/$stop1(.*?)$stop2/)[0]; ;)
-
\'.+\' означает любую последовательность. => Мой метод рабочий.
Но и звезда тоже вполне могла бы удовлетворить.
-
.+\' означает любую последовательность. => Мой метод рабочий.
не-а.
$StringWithVariablesAndc00lWords =~ s/.+($MyWordA)//g;
это означает, что у тебя не работает, если б сразу все шло со служебного слова ;) потому как нужен хоть один символ до него
-
да, я считал стоку вида XXXXmyc00lwordADATAmyc00lwordBXXX.