Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Помогите составить регулярное выражения


Автор: unkis 30.10.2007, 14:40
Помогите создать регулярное выражения
нужно чтобы это регулярное выражения определяла что-то типа такого слова

[1,5],[5],[5,0]

и не определяла такое

[1,5][5],[5,0]

тоесть без запятой между скобками

я сделал что-тот типа такого, но у меня проблема с запятой, как это исправить

Код

$a1 ="[1,5],[5],[5,0]";


print "Result is: ".(($a1=~ m/^((\[[\d,\,+]+\],*)+)$/g)eq ""?0:1);


Автор: amg 30.10.2007, 16:06
Код

$a1 = "[1,5],[5],[5,0]";
$a2 = "[1,5][5],[5,0]";
foreach ($a1,$a2) {
  print "$_: Result is ".(m/^(\[[\d,]+\],)+\[[\d,]+\]$/g ? 1 : 0)."\n";
}


Автор: unkis 30.10.2007, 17:48
Цитата(amg @ 30.10.2007,  14:06)
Код

$a1 = "[1,5],[5],[5,0]";
$a2 = "[1,5][5],[5,0]";
foreach ($a1,$a2) {
  print "$_: Result is ".(m/^(\[[\d,]+\],)+\[[\d,]+\]$/g ? 1 : 0)."\n";
}

Спасибо, но это не совсем то что мне нужно

твое регулярное выражение, говорит "0" на вот это слово [5], а должно говорить "1".

спасибо жду следующих предложений.

Автор: amg 30.10.2007, 17:54
Цитата(unkis @  30.10.2007,  17:48 Найти цитируемый пост)
твое регулярное выражение, говорит "0" на вот это слово [5], а должно говорить "1".
Из первоначального условия этого не следовало. Но проблемы нет.
Код

$a1 = "[1,5],[5],[5,0]";
$a2 = "[1,5][5],[5,0]";
$a3 = "[5]";

foreach ($a1,$a2,$a3) {
  print "$_: Result is ".(m/^(\[[\d,]+\],)*\[[\d,]+\]$/ ? 1 : 0)."\n";
}



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)