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 回になります。リーリー 上記のコード例では、パラメータ「PREG_OFFSET_CAPTURE」を追加しています。この場合、$matches にオフセット番号が 1 つ増えます。例えば、以下の「2」
preg_match_all:
「グローバル」正規表現一致を実行します
一致した完全な数 (おそらく 0) を返すか、エラーが発生した場合は FALSE を返します。
以下のコードの $subject と $pattern は上記と同じです。唯一の違いは、preg_match が preg_match_all に置き換えられていることです。 リーリー
戻り値の数は 2 で、$matches 配列の入力を見ると、2 つあります。上記の他にもう1つ。
preg_replace:
正規表現の検索と置換を実行する
subject が配列の場合、preg_replace() は配列を返し、それ以外の場合は文字列を返します。
一致するものが見つかった場合は、置換された件名が返され、そうでない場合は、変更されていない件名が返されます。エラーが発生した場合は NULL が返されます。
コードでは、$subject は 2 つの文字列セットを含む配列です。次のステップは、複数の数値を大文字の「Z」に置き換えることです。
リーリー
preg_replace_callback:
「コールバック」を使用して正規表現検索と置換を実行します
置換文字列を計算するために置換の代わりにコールバックを指定できることを除いて、この関数の動作は、返される結果を含む他の側面では preg_replace() と同等です。
次のコードも大文字の「Z」に置き換えられます。コールバック関数の各 $matches の内容は、コードのコメント部分です。1 回目は 133、2 回目は 2 です。 リーリー
preg_grep:パターンに一致する配列エントリを返します
入力内のキーを使用してインデックス付けされた配列
を返します。以下のサンプルコードでは、数字を含まない $subject 配列に「ddsdfd」を追加しました。照合する際に、数字のない数字を除外しています。
$result2 の出力はその逆で、フィルターされた結果が出力されますが、キーは 0 ではなく 2 のままです。
preg_split: 通过一个正则表达式分隔字符串 返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。 下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。 preg_last_error: 返回最后一个PCRE正则执行产生的错误代码 preg_quote: 转义正则表达式字符 返回转义后的字符串。 下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。 将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc” 4、模式修正符
以上就是关于php正则表达式的全部内容介绍,希望对大家的学习有所帮助。
$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);
$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_match('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar');
$result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出
print_r($result);
$subject = "dd.a?a2cc";
$result = preg_quote($subject);
$result2 = preg_quote($subject, 'a');
print_r($result);
print_r($result2);