Perl/Opis wyrażeń regularnych
Wygląd
< 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";
}
|