Forum Webscript.Ru
Программирование => Perl => Тема начата: Yaroslav от 18 Июня 2007, 19:02:14
-
возможно ли вообще решить такую задачу как поиск с необязательными парраметрами
$text[1]="подарок, есть 10 штук";
$text[2]="подарок[15], есть 7 штук";
foreach (@text) {
if (m/подарок, есть (.*) штук/) { $pod=1; $kol=$1; }
if (m/подарок\\[(.*)\\], есть (.*) штук/) { $pod=$1; $kol=$2; }
}
-
Yaroslav
Если именно такие варианты как ты написал, то:
$text[1]="подарок, есть 10 штук";
$text[2]="подарок[15], есть 7 штук";
foreach my $text (@text) {
($pod=1, $kol=$1) = $text = /^(?:\\D+\\[(\\d*)\\]\\D+|[^\\[]+()[^\\]]+)(\\d*)\\D+$/;
}
-
Phoinix
не работает :(
но натолкнуло на мысль :)
$text[1]="подарок, есть 10 штук";
$text[2]="подарок[15], есть 7 штук";
foreach (@text) {
if (m/подарок(?:\\[(\\D+)\\]|), есть (\\d+) штук/) {
$pod = $1 || 1;
$kol = $2;
}
-
Yaroslav
Я не проверил код, только рег, а ты даже и не пытался разобраться...
Копипаст - рулит...
foreach my $text (@text) {
my ($pod, $kol) = $text =~m /^(?:\\D+\\[(\\d*)\\]\\D+|[^\\[\\]]+?)(\\d+)\\D+$/;
print $pod, $kol;
}
Можешь смело копировать и вставлять в свой код...
Пояснять не буду, раз тебе не нужно...
А вот использовать кириллицу в регулярных выражениях - рискованное занятие...