PHP-正規表現
正規表現は、文字自体のシーケンスまたはパターンにすぎません。これらは、パターンマッチング機能の基盤を提供します。
正規表現を使用すると、別の文字列内の特定の文字列を検索したり、ある文字列を別の文字列に置き換えたり、文字列を多くのチャンクに分割したりできます。
PHPは、それぞれが特定のタイプの正規表現に対応する2セットの正規表現関数に固有の関数を提供します。あなたはあなたの快適さに基づいてそれらのどれでも使うことができます。
- POSIX正規表現
- PERLスタイルの正規表現
POSIX正規表現
POSIX正規表現の構造は、一般的な算術式の構造と同じです。さまざまな要素(演算子)を組み合わせて、より複雑な式を形成します。
最も単純な正規表現は、g、haggle、bagなどの文字列内のgなどの単一の文字に一致するものです。
POSIX正規表現で使用されているいくつかの概念について説明しましょう。その後、正規表現関連の関数を紹介します。
ブラケット
角かっこ([])は、正規表現のコンテキストで使用される場合に特別な意味を持ちます。これらは、文字の範囲を見つけるために使用されます。
シニア番号 | 表現と説明 |
---|---|
1 | [0-9] 0から9までの任意の10進数に一致します。 |
2 | [a-z] 小文字のaから小文字のzまでの任意の文字に一致します。 |
3 | [A-Z] 大文字のAから大文字のZまでの任意の文字に一致します。 |
4 | [a-Z] 小文字のaから大文字のZまでの任意の文字に一致します。 |
上記の範囲は一般的なものです。範囲[0-3]を使用して0から3の範囲の10進数に一致させるか、範囲[bv]を使用してbからvの範囲の小文字に一致させることもできます。
定量化子
括弧で囲まれた文字シーケンスと単一文字の頻度または位置は、特殊文字で表すことができます。特定の意味を持つ各特殊文字。+、*、?、{int。range}、および$フラグはすべて文字シーケンスに従います。
シニア番号 | 表現と説明 |
---|---|
1 | p+ 少なくとも1つのpを含む任意の文字列に一致します。 |
2 | p* これは、0個以上のpを含む任意の文字列に一致します。 |
3 | p? これは、0個または1個のpを含む任意の文字列に一致します。 |
4 | p{N} のシーケンスを含む任意の文字列に一致します N pの |
5 | p{2,3} これは、2つまたは3つのpのシーケンスを含む任意の文字列に一致します。 |
6 | p{2, } これは、少なくとも2つのpのシーケンスを含む任意の文字列に一致します。 |
7 | p$ 末尾がpの文字列と一致します。 |
8 | ^p 先頭がpの文字列と一致します。 |
例
次の例は、文字のマッチングに関する概念を明確にします。
シニア番号 | 表現と説明 |
---|---|
1 | [^a-zA-Z] これは、aからzおよびAからZの範囲の文字を含まない任意の文字列に一致します。 |
2 | p.p これは、pを含み、その後に任意の文字が続き、次に別のpが続く任意の文字列に一致します。 |
3 | ^.{2}$ 正確に2文字を含む任意の文字列に一致します。 |
4 | <b>(.*)</b> <b>と</ b>で囲まれたすべての文字列に一致します。 |
5 | p(hp)* これは、apとそれに続くシーケンスphpの0個以上のインスタンスを含む任意の文字列に一致します。 |
事前定義された文字範囲
プログラミングの便宜のために、文字クラスとも呼ばれるいくつかの事前定義された文字範囲を使用できます。文字クラスは、アルファベットや整数セットなど、文字の全範囲を指定します-
シニア番号 | 表現と説明 |
---|---|
1 | [[:alpha:]] アルファベット文字aAからzZを含むすべての文字列に一致します。 |
2 | [[:digit:]] 0から9までの数字を含む任意の文字列に一致します。 |
3 | [[:alnum:]] 英数字aAからzZおよび0から9を含むすべての文字列に一致します。 |
4 | [[:space:]] スペースを含むすべての文字列に一致します。 |
PHPの正規表現POSIX関数
PHPは現在、POSIXスタイルの正規表現を使用して文字列を検索するための7つの関数を提供しています-
シニア番号 | 機能と説明 |
---|---|
1 | ereg()
ereg()関数は、stringで指定された文字列で、patternで指定された文字列を検索し、パターンが見つかった場合はtrueを返し、それ以外の場合はfalseを返します。 |
2 | ereg_replace()
ereg_replace()関数は、patternで指定された文字列を検索し、見つかった場合はpatternをreplacementに置き換えます。 |
3 | eregi()
eregi()関数は、patternで指定された文字列全体で、stringで指定された文字列を検索します。検索では大文字と小文字は区別されません。 |
4 | eregi_replace()
eregi_replace()関数は、文字列内のパターンの検索で大文字と小文字が区別されないことを除いて、ereg_replace()とまったく同じように動作します。 |
5 | スプリット()
split()関数は、文字列をさまざまな要素に分割します。各要素の境界は、文字列内のパターンの出現に基づいています。 |
6 | spliti()
spliti()関数は、大文字と小文字を区別しないことを除いて、兄弟のsplit()とまったく同じように動作します。 |
7 | sql_regcase()
sql_regcase()関数は、入力パラメータ文字列の各文字を2文字を含む括弧で囲まれた式に変換するユーティリティ関数と考えることができます。 |
PERLスタイルの正規表現
Perlスタイルの正規表現は、対応するPOSIXの正規表現に似ています。POSIX構文は、Perlスタイルの正規表現関数とほぼ互換的に使用できます。実際、前のPOSIXセクションで紹介した任意の数量詞を使用できます。
PERL正規表現で使用されているいくつかの概念について説明しましょう。その後、正規表現関連の関数を紹介します。
メタ文字
メタ文字は、組み合わせに特別な意味を与えるように機能するバックスラッシュが前に付いた単純なアルファベット文字です。
たとえば、「\ d」メタ文字を使用して多額の金額を検索できます。 /([\d]+)000/、 ここに \d 数字の任意の文字列を検索します。
以下は、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
修飾子
大文字と小文字の区別、複数行での検索など、正規表現での作業をはるかに簡単にすることができるいくつかの修飾子が利用可能です。
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
PHPの正規表現PERL互換関数
PHPは、Perl互換の正規表現を使用して文字列を検索するための次の関数を提供します-
シニア番号 | 機能と説明 |
---|---|
1 | preg_match()
preg_match()関数は、文字列でパターンを検索し、パターンが存在する場合はtrueを返し、存在しない場合はfalseを返します。 |
2 | preg_match_all()
preg_match_all()関数は、文字列内のすべてのパターンに一致します。 |
3 | preg_replace()
preg_replace()関数は、正規表現をパターンおよび置換入力パラメーターで使用できることを除いて、ereg_replace()と同じように動作します。 |
4 | preg_split()
preg_split()関数は、正規表現がpatternの入力パラメーターとして受け入れられることを除いて、split()とまったく同じように動作します。 |
5 | preg_grep()
preg_grep()関数は、input_arrayのすべての要素を検索し、正規表現パターンに一致するすべての要素を返します。 |
6 | preg_quote()
正規表現文字を引用する |