[ 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 ]
Pokrewne
- Strona startowa
- Daley Brian Gwiezdne Wojny Przygody Hana Solo 02 Zemsta Hana Solo
- (Ebook German Erotik) Flirt Kurs, Vom Anbaggern Zum Flirten
- Historia teatru i dramatu wĹoskiego od XIII do XXI wieku ebook demo
- (eBook german) Star Trek DS9 005 Gefallene Helden
- (eBook Deutsch Roman) Zimmer Bradley, Marion Tochter der Nacht
- (Ebook Libri Ita) Paolo Coelho L' Alchimista
- Ebook Kazimierz Bartoszewicz Konstytucya 3 Maja
- Brian Lumley [Necroscope 13] [E Branch 03] Avengers v1.0
- ABC program wychowania przedszkolnego XXI wieku Anna Ĺada Grodzicka
- Brian Haig Sean Drummond 01 Tajna sankcja
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- pajaa1981.pev.pl