Программирование > Perl

регулярные выражения

(1/1)

Yaroslav:
возможно ли вообще решить такую задачу как поиск с необязательными парраметрами


--- Код: ---$text[1]="подарок, есть 10 штук";
$text[2]="подарок[15], есть 7 штук";
foreach (@text) {
  if (m/подарок, есть (.*) штук/) { $pod=1; $kol=$1; }
  if (m/подарок\\[(.*)\\], есть (.*) штук/) { $pod=$1; $kol=$2; }
}
--- Конец кода ---

Phoinix:
Yaroslav
Если именно такие варианты как ты написал, то:

$text[1]="подарок, есть 10 штук";
$text[2]="подарок[15], есть 7 штук";
foreach my $text (@text) {
  ($pod=1, $kol=$1) = $text = /^(?:\\D+\\[(\\d*)\\]\\D+|[^\\[]+()[^\\]]+)(\\d*)\\D+$/;
}

Yaroslav:
Phoinix
не работает :(
но натолкнуло на мысль :)

--- Код: ---$text[1]="подарок, есть 10 штук";
$text[2]="подарок[15], есть 7 штук";
foreach (@text) {
  if (m/подарок(?:\\[(\\D+)\\]|), есть (\\d+) штук/) {
    $pod = $1 || 1;
    $kol = $2;
}
--- Конец кода ---

Phoinix:
Yaroslav

Я не проверил код, только рег, а ты даже и не пытался разобраться...
Копипаст - рулит...

foreach my $text (@text) {
    my ($pod, $kol) = $text =~m /^(?:\\D+\\[(\\d*)\\]\\D+|[^\\[\\]]+?)(\\d+)\\D+$/;
    print $pod, $kol;
}

Можешь смело копировать и вставлять в свой код...
Пояснять не буду, раз тебе не нужно...
А вот использовать кириллицу в регулярных выражениях - рискованное занятие...

Навигация

[0] Главная страница сообщений

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии