|
|
|
новичок
      
участник
Last Login: 13.06.2006 15:18
Сообщ.: 7,
Visits: 79
|
|
вопрос: возможен ли $str =~ /некий-REGEX/ , возвращающий "совпадения" при условии:
1. $str может быть одно- или многострочной строкой 2. первый символ $str должен быть не пробельным 3. имеет место баланс скобок, либо их отсутствие
, например, в случае:
######################### " string0 stringA () nvl (( select months_between(sysdate,&due_dte) from dual),0) &due_mnths_back () do funcB -1 &some_flag_C " #########################
- желаемым результатом был бы массив из элементов:
@sol = (
"string0", # нуль скобок = баланс
"stringA ()", # баланс
"nvl (( # баланс в много- select # строчной подстроке, months_between(sysdate,&due_dte) # начатой с 1го `непробела` from dual),0) &due_mnths_back ()", #
"-1 &some_flag_C" # нуль скобок = баланс
)
- т.е. с единственной отбракованной строкой " do funcB" как не удовлетворяющий (2) , и не являющийся продолжением nvl(.....
(посимвольная работа со стеком уже реализована (в C-подобном стиле) и припасена на крайний случай как неприятная необходимость.)
заранее спасибо за помощь.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 13.07.2006 17:05
Сообщ.: 124,
Visits: 1 356
|
|
Ну, как-то туманно вы объяснили задачу... Тем не менее попробую подсказать. Для начала - я думаю что операторы условия вам не нужны, а просто нужно создать шаблон регулярного выражения, которое будет пропускать только нужные вам значения. Удобно в вашем примере использовать переменные $1 $2 и т.д. То есть например:
###### string ######### good 123 bad AAA good aaa well #######################
Можно пропарсить кодом, вида:
$string=~ m/(good [0-9]+)\s+(bad [A-Z]+)\s+(good [a-z]+)\s+(well)/g;
print "first: $1second $2third $3fourth $4";
PerlMonks.Org.Ru.... coming soon
|
|
|
|
|
Supreme Being
      
участник
Last Login: 13.07.2006 17:05
Сообщ.: 124,
Visits: 1 356
|
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
|
|
|
|
Supreme Being
      
участник
Last Login: 13.07.2006 17:05
Сообщ.: 124,
Visits: 1 356
|
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
| PDK - это для perl, я имел ввиду отладку самих регулярных выражений в perl
|
|
|
|
|
Supreme Being
      
участник
Last Login: 13.07.2006 17:05
Сообщ.: 124,
Visits: 1 356
|
|
Отладку регвыражений... а чем-то можно отлажвать? каким-то инструментом? Неслышал об этом к сожалению :(.. Я так - тестирую разные варианты - засекаю среднюю скорость отработки скрипта...
PerlMonks.Org.Ru.... coming soon
|
|
|
|