|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/371.32 14 Aug 2000 12:52:03 To : Anton Petrusevich Subject : Re: regexp? -------------------------------------------------------------------------------- <Anton_Petrusevich@p29.f16.n5004.z2.fidonet.org> wrote: AP> Столкнулся тут с непоняткой одной. Ежели кто растолкует, буду очень AP> рад. Итак. AP> casus:casus$ cat a AP> F11= AP> F12 AP> F1 AP> F13 AP> casus:casus$ perl -nle 'print if /F\d{1,2}[^=]/' a AP> F11= AP> F12 AP> F13 AP> Вроде как квантификатор {1,2} должен работать по принципу максимальной AP> жадности и съедать все цифирьки (можно поставить ``+'', ничего не AP> изменится), далее проверяем на наличие отсутствия сивола ``=''. Чего ради По принципу максимальной жадности, но с тем, чтобы все выражение все же отматчилось. AP> всплывает строчка ``F11=''? От F\d[^=]. F\d\d[^=] не матчится. Замечу, кстати, что F12 и F13 матчатся точно так же. Потому что и для них F\d\d[^=] не матчится - ну нету там после второй цифры никаких символов. AP> Hе понятно. Куда делась ``F1''? Впрочем, Как это куда? [^=] - это один символ, не равный =. А не то, что ты подумал. AP> продолжим: AP> casus:casus$ perl -nle 'print if /F\d{1,2}(?!=)/' a Это уже лучше. Hо все еще не то, что тебе надо. В зависимости от задачи могут подойти варианты /^F\d{1,2}$/ (строка _состоит из_ F и одной или двух цифр; шаг влево, шаг вправо приравнивается к бегству), /F\d{1,2}(?!\d*=)/ (F, одна или две цифры, дальше что угодно кроме последовательности цифр и знака = за ней), ... Задачу ты не сформулировал, сам дурак. AP> F11= AP> F12 AP> F1 AP> F13 AP> Hифига не понимаю. Да, утвердительное условие работает as expected. Остальные тоже. Если expect того, что написано в документации. -- Счастливо! Ран. --- ifmail v.2.14.os-p7-tma3 * Origin: MemoNet (2:5020/371.32@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/347349aa54ab.html, оценка из 5, голосов 10
|