Perl/Opis wyrażeń regularnych
< Perl
Wyrażenia regularne z przykładami w Perlu
edytuj
Znak | Opis | Przykład
|
---|---|---|
. | Dopasowuje każdy znak poza znakiem nowej linii. |
$string1 = "Hello World\n"; if ($string1 =~ m/...../) { print "$string1 ma długość większą od 5\n"; } |
( ) | Grupuje fragment wyrażenia jako pojedynczy element. Jeśli taki fragment zostanie dopasowany, jego wartość znajdzie się w zmiennych $1, $2, $3... |
$string1 = "Hello World\n"; if ($string1 =~ m/(H..).(o..)/) { print "Dopasowało '$1' oraz '$2'\n"; } Wynik: Dopasowało 'Hel' oraz 'o W'; |
+ | Poprzedzający element musi być dopasowany 1 lub więcej razy |
$string1 = "Hello World\n"; if ($string1 =~ m/l+/) { print "Występuje jedno lub więcej liter l obok siebie w $string1\n"; } |
? | Poprzedzający element ma być dopasowany 0 lub 1 raz |
$string1 = "Hello World\n"; if ($string1 =~ m/H.?e/) { print "Występują 'H' oraz 'e' odseparowane "; print "żadnym lub jednym znakiem (Np.: He Hoe)\n"; } |
? | Użyty po *, + lub {M,N}, sprawia, że to dopasowanie jest nie-zachłanne (dopasowuje jak najmniejszą liczbę razy) |
$string1 = "Hello World\n"; if ($string1 =~ m/(l+?o)/) { print "Dopasowane zostanie 'lo', a nie 'llo'.\n" } |
* | Poprzedzający element ma być dopasowany 0 lub więcej razy |
$string1 = "Hello World\n"; if ($string =~ m/el*o/) { print "Pomiędzy 'e', a 'o' jest zero lub "; print "więcej liter 'l' (eo, elo, ello, elllo)\n"; } |
{M,N} | Poprzedzający element musi być dopasowany od M do N razy |
$string1 = "Hello World\n"; if ($string1 =~ m/l{1,2}/) { print "Znalazłem podciąg o co najmniej jednej literze l, a najwięcej dwóch.\n"; } |
[...] | Zawiera zbiór możliwych znaków. Dopasowuje dowolny z nich. |
$string1 = "Hello World\n"; if ($string1 =~ m/[aeiou]+/) { print "$string1 zawiera jedną lub więcej samogłosek\n"; } |
[^...] | Dopasowuje każdy znak poza tymi między nawiasami kwadratowymi |
$string = "Sky."; unless($string =~ /[aeiouy]/) { print "$string nie zawiera żadnych samogłosek\n"; } |
| | Dopasowuje albo element po lewej, albo po prawej |
$string1 = "Hello World\n"; if ($string1 =~ m/(Hello|Hi)/) { print "$string1 zawiera Hello albo Hi\n"; } |
\b | Dopasowuje podział między wyrazami |
$string1 = "Hello World\n"; if ($string1 =~ m/ello?\b/) { print "Znalazłem słowo zakończone na 'ello'\n"; } else { print "Nie znalazłem słów zakończonych na 'ello'\n"; } |
\w | Dopasowuje litery, cyfry oraz "_" |
$string1 = "Hello World\n"; if ($string1 =~ m/\w/) { print "Tekst zawiera conajmniej jeden znak alfanumeryczny\n"; } |
\W | Dopasowuje znak nie bedący literą ani cyfrą |
$string1 = "Hello World\n"; if ($string1 =~ m/\W/) { print "Odstęp między Hello a World nie jest literą ani cyfrą\n"; } |
\s | Dopasowuje biały znak (spacja, tabulator, nowa linia) |
$string1 = "Hello World\n"; if ($string1 =~ m/\s.*\s/) { print "Znalazłem 2 białe znaki rozdzielone innymi znakami w $string1\n"; } |
\S | Dopasowuje każdy znak poza białymi znakami |
$string1 = "Hello World\n"; if ($string1 =~ m/\S.*\S/) { print "Znalazłem 2 nie-białe znaki rozdzielone innymi znakami w $string1\n"; } |
\d | Dopasowuje cyfrę, dokładnie jak [0-9] |
$string1 = "99 bottles of beer on the wall."; if ($string1 =~ m/(\d+)/) { print "$1 jest pierwszą liczbą w '$string1'\n"; } Wynik: 99 jest pierwszą liczbą w '99 bottles of beer on the wall.' |
\D | Dopasowuje znak nie będący cyfrą |
$string1 = "Hello World\n"; if ($string1 =~ m/\D/) { print "W $string1 występuje przynajmniej 1 znak nie będący cyfrą.\n"; } |
^ | Dopasowuje początek linii albo tekstu |
$string1 = "Hello World\n"; if ($string1 =~ m/^He/) { print "$string1 zaczyna się znakami 'He'\n"; } |
$ | Dopasowuje koniec linii albo tekstu |
$string1 = "Hello World\n"; if ($string1 =~ m/rld$/) { print "$string1 kończy się znakami 'rld'\n"; } |