X


[ Pobierz całość w formacie PDF ]

cz . Nie potrafi wyja ni semantyki wyra enia, ale nie mo na mie wszystkiego. Za pomoc
prostego programu mog obja nia wyra enia podane w wierszu polece :
#!/usr/bin/perl
use YAPE::Regex::Explain;
print YAPE::Regex::Explain->new( $ARGV[0] )->explain;
Kiedy uruchamiam program nawet z krótkim, prostym wyra eniem, otrzymuj obszerne wyniki:
$ perl yape-explain 'Oto kolejny haker (\S+),'
The regular expression:
(?-imsx:Oto kolejny haker (\S+),)
matches as follows:
Odszyfrowywanie wyra e regularnych | 37
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
Oto kolejny haker 'Oto kolejny haker '
----------------------------------------------------------------------
( group and capture to \1:
----------------------------------------------------------------------
\S+ non-whitespace (all but \n, \r, \t, \f,
and " ") (1 or more times (matching the
most amount possible))
----------------------------------------------------------------------
) end of \1
----------------------------------------------------------------------
, ','
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
Ko cowe my li
Dotarlem niemal do ko ca rozdzialu, ale wyra enia regularne maj znacznie wi cej funkcji,
które wydaj mi si przydatne. Czytelnicy mog potraktowa ten podrozdzial jako krótki prze-
wodnik po funkcjach, które mog przestudiowa samodzielnie.
Nie musz ogranicza si do prostych klas znakowych, takich jak \w (znaki slów), \d (cyfry) oraz
inne sekwencje uko nikowe. Mog równie u ywa klas znakowych POSIX. Umieszczam je
w nawiasie kwadratowym z dwukropkiem po obu stronach nazwy:
print "Znalaz em znak alfabetyczny!\n" if $string =~ m/[:alpha:]/;
print "Znalaz em cyfr szesnastkow !\n" if $string =~ m/[:xdigit:]/;
Aby zanegowa te klasy, u ywam daszka (^) po pierwszym dwukropku:
print "Nie znalaz em znaków alfabetycznych!\n" if $string =~ m/[:^alpha:]/;
print "Nie znalaz em spacji!\n" if $string =~ m/[:^space:]/;
Mog uzyska ten sam efekt przez podanie nazwanej wla ciwo ci. Sekwencja \p{Nazwa} (mala
litera p) dol cza znaki odpowiadaj ce nazwanej wla ciwo ci, a sekwencja \P{Nazwa} (wielka
litera P} jest jej dopelnieniem:
print "Znalaz em znak ASCII!\n" if $string =~ m/\p{IsASCII}/;
print "Znalaz em znak kontrolny!\n" if $string =~ m/\p{IsCntrl}/;
print "Nie znalaz em znaków interpunkcyjnych!\n" if $string =~ m/\P{IsPunct}/;
print "Nie znalaz em wielkich liter!\n" if $string =~ m/\P{IsUpper}/;
Modul Regexp::Common zawiera przetestowane i sprawdzone wyra enia regularne dla popular-
nych wzorców, takich jak adresy WWW, liczby, kody pocztowe, a nawet przekle stwa. Oferuje
wielopoziomow tablic asocjacyjn %RE, której warto ciami s wyra enia regularne. Je li komu
to nie pasuje, mo e skorzysta z interfejsu funkcyjnego:
use Regexp::Common;
print "Znalaz em liczb rzeczywist \n" if $string =~ /$RE{num}{real}/;
print "Znalaza em liczb rzeczywist \n" if $string =~ RE_num_real;
38 | Rozdzia 2. Zaawansowane wyra enia regularne
Czytaj dalej... [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qus.htw.pl





  • Drogi uĹźytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczać Ci coraz lepsze usługi. By móc to robić prosimy, abyś wyraził zgodę na dopasowanie treści marketingowych do Twoich zachowań w serwisie. Zgoda ta pozwoli nam częściowo finansować rozwój świadczonych usług.

    Pamiętaj, że dbamy o Twoją prywatność. Nie zwiększamy zakresu naszych uprawnień bez Twojej zgody. Zadbamy również o bezpieczeństwo Twoich danych. Wyrażoną zgodę możesz cofnąć w każdej chwili.

     Tak, zgadzam się na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerĂłw w celu dopasowania treści do moich potrzeb. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

     Tak, zgadzam się na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerĂłw w celu personalizowania wyświetlanych mi reklam i dostosowania do mnie prezentowanych treści marketingowych. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

    Wyrażenie powyższych zgód jest dobrowolne i możesz je w dowolnym momencie wycofać poprzez opcję: "Twoje zgody", dostępnej w prawym, dolnym rogu strony lub poprzez usunięcie "cookies" w swojej przeglądarce dla powyżej strony, z tym, że wycofanie zgody nie będzie miało wpływu na zgodność z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.