Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Регулярные выражения > что делают эти конструкции в регепсах?


Автор: zyxerr 24.11.2008, 15:52
(??{…}) 
в описании сказано что, выражение обозначает возврат переменной, использованной в РВ. Немного непонятно как это работает.
.
(?:…) 
насколько я понял, это операция на группе без захватывания (с пропуском) переменной $1,$2 и т.д.
.
(?...) 
вообще не нашел

Автор: amg 24.11.2008, 16:58
Цитата(zyxerr @  24.11.2008,  15:52 Найти цитируемый пост)
(?...) вообще не нашел
Это то просто. На месте многоточия могут стоять модификаторы регулярных выражений. Например
/(?i[a-z])[a-z]+/ 
слова из прописных букв, первая буква может быть заглавной

(?:…)  тут все правильно

(??{…})  в фигурных скобках код, который вычислит регулярку, и она будет подставлена в основное регулярное выражение, причем произойдет это в процессе выполнения основного регулярного выражения. См. Camel-book.

Автор: zyxerr 24.11.2008, 17:16
"(??{…})  в фигурных скобках код, который вычислит регулярку, и она будет подставлена в основное регулярное выражение, причем произойдет это в процессе выполнения основного регулярного выражения. См. Camel-book. "
.
Понятно, т.е. (?{код}) - просто исполнение кода
а (??{...}) - это динамическое исполнение кода
.
попробую найти пример, чтобы понять как (??{...}) работает...

Автор: amg 24.11.2008, 17:34
Цитата(zyxerr @  24.11.2008,  17:16 Найти цитируемый пост)
попробую найти пример, чтобы понять как (??{...}) работает...

 smile 
Код
$_ = '2+3=5';
print m/(.+)=(??{eval $1})/ ? 5 : 2;


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