この記事では主に PHP の正規表現について詳しく説明します。興味のある方はぜひ参考にしてください。
phpの正規表現の共有:
1. 正規表現を作成します
$regex = '/d/i';
は、JavaScriptの最初の方法に少し似ています。ここの単語は文字列であるということです。
2. 正規表現の特殊文字 + * ? $ ( ) { } = : -
3.正規表現
の関数には、preg_matchとpreg_match_all、preg_replaceとpreg_replace_callback、preg_grep、preg_split、preg_last_error、preg_quoteの8つのメソッドがあります。
preg_match:
正規表現一致を実行
パターンの一致数
を返します。 preg_match() は最初の一致後に検索を停止するため、その値は 0 回 (一致なし) または 1 回になります。
$subject = "dd133aa2"; $pattern = '/\d+/'; preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE); print_r($matches);上記のコード例では、パラメータ「PREG_OFFSET_CAPTURE」を追加します。この場合、$matches にオフセット番号が 1 つ追加されます。たとえば、以下の「2」
preg_match_all:
「グローバル」正規表現一致を実行します一致の完全な数 (おそらく 0) を返します。エラーが発生した場合は FALSE を返します。 。
次のコードでは、$subject と $pattern は上記と同じです。唯一の違いは、preg_match が preg_match_all に置き換えられていることです。
preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE); print_r($matches);返される回数は 2 で、一致するものが 2 つあります。配列 $matches の入力を見ると、2 つあります。上記にもう1つ。
preg_replace:
正規表現検索と置換を実行します件名が配列の場合、preg_replace() は配列を返し、それ以外の場合は文字列を返します。
一致するものが見つかった場合は、置換された件名が返され、そうでない場合は、変更されていない件名が返されます。エラーが発生した場合は NULL が返されます。
コードでは、$subject は 2 つの文字列セットを含む配列です。次のステップは、複数の数値を大文字の「Z」に置き換えることです。
$subject = array("dd133aa2", "kk1ff3"); $pattern = '/\d+/'; $result = preg_replace($pattern, 'Z', $subject); print_r($result);
preg_replace_callback:
「コールバック」を使用して正規表現検索と置換を実行します関数の動作に加えて、指定することもできます置換の代わりにコールバックが置換文字列の計算を実行します。それ以外の場合は、返された結果を含めて preg_replace() と同等です。
次のコードも大文字の「Z」に置き換えられます。コールバック関数の各 $matches の内容は、コードのコメント部分です。1 回目は 133、2 回目は 2 です。
$subject = "dd133aa2"; $pattern = '/\d+/'; $result = preg_replace_callback($pattern, function($matches) { //$matches [0] => 133 //$matches [0] => 2 return 'Z'; }, $subject); print_r($result);preg_grep: パターンに一致する配列エントリを返します
入力内のキーを使用してインデックス付けされた配列
を返します。 以下のサンプルコードでは、数字を含まない $subject 配列に「ddsdfd」を追加しました。マッチングを行う際に、数字のないものを除外しました。$result2 が出力するものはその逆で、フィルターされたものを出力しますが、キーは 0 ではなく 2 のままです。
$subject = array("dd133aa2", "kk1ff3", "ddsdfd");
$pattern = '/\d+/';
$result = preg_grep($pattern, $subject);
$result2 = preg_grep($pattern, $subject, PREG_GREP_INVERT);
print_r($result);
print_r($result2);
preg_split:
正規表現で文字列を分割します
返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。
下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。
$subject = "dd133aa2cc"; $pattern = '/(\d+)/'; $result = preg_split($pattern, $subject); $result2 = preg_split($pattern, $subject, null, PREG_SPLIT_DELIM_CAPTURE); print_r($result); print_r($result2);
preg_last_error:
返回最后一个PCRE正则执行产生的错误代码
preg_match('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar'); $result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出 print_r($result);
preg_quote:
转义正则表达式字符
返回转义后的字符串。
下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。
将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”
$subject = "dd.a?a2cc"; $result = preg_quote($subject); $result2 = preg_quote($subject, 'a'); print_r($result); print_r($result2);
4、模式修正符
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
以上がphpの正規表現について詳しく見るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。