PHP - wyrażenia regularne
Wyrażenia regularne to nic innego jak sekwencja lub wzór samych znaków. Stanowią podstawę funkcjonalności dopasowywania wzorców.
Używając wyrażenia regularnego, możesz przeszukać określony ciąg w innym ciągu, możesz zastąpić jeden ciąg innym, a także podzielić ciąg na wiele części.
PHP oferuje funkcje specyficzne dla dwóch zestawów funkcji wyrażeń regularnych, z których każdy odpowiada określonemu typowi wyrażenia regularnego. Możesz użyć dowolnego z nich w oparciu o swój komfort.
- Wyrażenia regularne POSIX
- Wyrażenia regularne w stylu PERL
Wyrażenia regularne POSIX
Struktura wyrażenia regularnego POSIX nie różni się od struktury typowego wyrażenia arytmetycznego: różne elementy (operatory) są łączone w celu utworzenia bardziej złożonych wyrażeń.
Najprostsze wyrażenie regularne to takie, które dopasowuje pojedynczy znak, na przykład g, do łańcuchów, takich jak g, targowanie się lub torba.
Podajmy wyjaśnienie kilku pojęć używanych w wyrażeniach regularnych POSIX. Następnie przedstawimy Ci funkcje związane z wyrażeniami regularnymi.
Wsporniki
Nawiasy ([]) mają specjalne znaczenie, gdy są używane w kontekście wyrażeń regularnych. Służą do wyszukiwania szeregu znaków.
Sr.No | Wyrażenie i opis |
---|---|
1 | [0-9] Dopasowuje dowolną cyfrę dziesiętną od 0 do 9. |
2 | [a-z] Dopasowuje dowolny znak od małej litery a do małej litery z. |
3 | [A-Z] Dopasowuje dowolny znak od dużej litery A do dużej litery Z. |
4 | [a-Z] Pasuje do dowolnego znaku od małej litery a do dużej litery Z. |
Przedstawione powyżej zakresy są ogólne; możesz także użyć zakresu [0-3], aby dopasować dowolną cyfrę dziesiętną od 0 do 3, lub zakresu [bv], aby dopasować dowolną małą literę od b do v.
Kwantyfikatory
Częstotliwość lub położenie sekwencji znaków w nawiasach i pojedynczych znaków można oznaczyć znakiem specjalnym. Każdy znak specjalny ma określoną konotację. Znak +, *,?, {Int. range} i flagi $ następują po sekwencji znaków.
Sr.No | Wyrażenie i opis |
---|---|
1 | p+ Pasuje do dowolnego ciągu zawierającego co najmniej jedno p. |
2 | p* Pasuje do dowolnego łańcucha zawierającego zero lub więcej znaków p. |
3 | p? Pasuje do dowolnego ciągu zawierającego zero lub jeden p. |
4 | p{N} Pasuje do dowolnego ciągu zawierającego sekwencję N p |
5 | p{2,3} Pasuje do dowolnego ciągu zawierającego sekwencję dwóch lub trzech p. |
6 | p{2, } Pasuje do dowolnego ciągu zawierającego sekwencję co najmniej dwóch p. |
7 | p$ Dopasowuje dowolny ciąg z literą p na końcu. |
8 | ^p Dopasowuje dowolny ciąg z literą p na początku. |
Przykłady
Poniższe przykłady wyjaśnią Twoje koncepcje dotyczące dopasowywania znaków.
Sr.No | Wyrażenie i opis |
---|---|
1 | [^a-zA-Z] Pasuje do dowolnego ciągu niezawierającego żadnego ze znaków od a do z i od A do Z. |
2 | p.p Pasuje do dowolnego łańcucha zawierającego p, po którym następuje dowolny znak, po którym następuje kolejne p. |
3 | ^.{2}$ Pasuje do dowolnego ciągu zawierającego dokładnie dwa znaki. |
4 | <b>(.*)</b> Pasuje do dowolnego ciągu zawartego w <b> i </b>. |
5 | p(hp)* Pasuje do dowolnego ciągu zawierającego ap, po którym następuje zero lub więcej wystąpień sekwencji php. |
Predefiniowane zakresy znaków
Dla wygody programowania dostępnych jest kilka predefiniowanych zakresów znaków, znanych również jako klasy znaków. Klasy znaków określają cały zakres znaków, na przykład alfabet lub zestaw liczb całkowitych -
Sr.No | Wyrażenie i opis |
---|---|
1 | [[:alpha:]] Pasuje do dowolnego łańcucha zawierającego znaki alfabetu od aA do zZ. |
2 | [[:digit:]] Pasuje do dowolnego ciągu zawierającego cyfry od 0 do 9. |
3 | [[:alnum:]] Pasuje do dowolnego ciągu zawierającego znaki alfanumeryczne od aA do zZ i od 0 do 9. |
4 | [[:space:]] Pasuje do dowolnego ciągu zawierającego spację. |
Funkcje PHP Regexp POSIX
Obecnie PHP oferuje siedem funkcji do wyszukiwania łańcuchów przy użyciu wyrażeń regularnych w stylu POSIX -
Sr.No | Opis funkcji |
---|---|
1 | ereg () Funkcja ereg () przeszukuje ciąg określony przez łańcuch w poszukiwaniu ciągu określonego przez wzorzec, zwracając wartość true, jeśli wzorzec zostanie znaleziony, a false w przeciwnym razie. |
2 | ereg_replace () Funkcja ereg_replace () wyszukuje ciąg określony przez wzorzec i zastępuje wzorzec zamiennikiem, jeśli zostanie znaleziony. |
3 | eregi () Funkcja eregi () przeszukuje ciąg określony przez wzorzec w poszukiwaniu ciągu określonego przez łańcuch. W wyszukiwaniu nie jest rozróżniana wielkość liter. |
4 | eregi_replace () Funkcja eregi_replace () działa dokładnie tak samo, jak ereg_replace (), z wyjątkiem tego, że wyszukiwanie wzorca w ciągu znaków nie jest rozróżniane. |
5 | rozdzielać() Funkcja split () podzieli ciąg na różne elementy, a granice każdego elementu będą oparte na występowaniu wzorca w łańcuchu. |
6 | spliti () Funkcja spliti () działa dokładnie w taki sam sposób, jak jej siostrzana funkcja split (), z wyjątkiem tego, że nie jest rozróżniana wielkość liter. |
7 | sql_regcase () Funkcja sql_regcase () może być traktowana jako funkcja narzędziowa, konwertująca każdy znak w ciągu parametru wejściowego na wyrażenie w nawiasach kwadratowych zawierające dwa znaki. |
Wyrażenia regularne w stylu PERL
Wyrażenia regularne w stylu Perla są podobne do ich odpowiedników w standardzie POSIX. Składnia POSIX może być używana prawie zamiennie z funkcjami wyrażeń regularnych w stylu Perla. W rzeczywistości możesz użyć dowolnego z kwantyfikatorów przedstawionych w poprzedniej sekcji POSIX.
Podajmy wyjaśnienie kilku pojęć używanych w wyrażeniach regularnych PERL. Następnie przedstawimy Ci funkcje związane z wyrażeniami regularnymi.
Znaki meta
Znak meta to po prostu znak alfabetyczny poprzedzony ukośnikiem odwrotnym, który nadaje kombinacji specjalne znaczenie.
Na przykład możesz wyszukiwać duże kwoty za pomocą metaznaku „\ d”: /([\d]+)000/Tutaj \d wyszuka dowolny ciąg znaków numerycznych.
Poniżej znajduje się lista metaznaków, których można używać w wyrażeniach regularnych w stylu PERL.
Character Description
. a single character
\s a whitespace character (space, tab, newline)
\S non-whitespace character
\d a digit (0-9)
\D a non-digit
\w a word character (a-z, A-Z, 0-9, _)
\W a non-word character
[aeiou] matches a single character in the given set
[^aeiou] matches a single character outside the given set
(foo|bar|baz) matches any of the alternatives specified
Modyfikatory
Dostępnych jest kilka modyfikatorów, które mogą znacznie ułatwić pracę z wyrażeniami regularnymi, na przykład uwzględnianie wielkości liter, wyszukiwanie w wielu wierszach itp.
Modifier Description
i Makes the match case insensitive
m Specifies that if the string has newline or carriage
return characters, the ^ and $ operators will now
match against a newline boundary, instead of a
string boundary
o Evaluates the expression only once
s Allows use of . to match a newline character
x Allows you to use white space in the expression for clarity
g Globally finds all matches
cg Allows a search to continue even after a global match fails
Funkcje PHP zgodne z Regexp PERL
PHP oferuje następujące funkcje do wyszukiwania łańcuchów za pomocą wyrażeń regularnych zgodnych z Perlem -
Sr.No | Opis funkcji |
---|---|
1 | preg_match () Funkcja preg_match () wyszukuje ciąg znaków pod kątem wzorca, zwracając wartość true, jeśli wzorzec istnieje, aw przeciwnym razie, wartość false. |
2 | preg_match_all () Funkcja preg_match_all () dopasowuje wszystkie wystąpienia wzorca w ciągu. |
3 | preg_replace () Funkcja preg_replace () działa tak samo jak ereg_replace (), z wyjątkiem tego, że we wzorcu i zastępczych parametrach wejściowych można używać wyrażeń regularnych. |
4 | preg_split () Funkcja preg_split () działa dokładnie tak samo jak split (), z wyjątkiem tego, że wyrażenia regularne są akceptowane jako parametry wejściowe dla wzorca. |
5 | preg_grep () Funkcja preg_grep () przeszukuje wszystkie elementy tablicy input_array, zwracając wszystkie elementy pasujące do wzorca regexp. |
6 | preg_ quote () Cytuj znaki wyrażeń regularnych |