一般的に使用される PHP 正規表現と文法注釈のまとめ

WJ
リリース: 2023-04-08 17:54:01
転載
2976 人が閲覧しました

基本構文

区切り文字:

正規表現の先頭と末尾を識別します。「/」または「」を使用します。 #' または '{ }' は、構文 '{ }' が正規表現演算子である可能性があるため、混乱を避けるために使用することはお勧めできません。推奨される使用法は次のとおりです。

Copy$pattern = '/[0-9]/';  //我喜欢这个,看起来比较简洁 $pattern = '#[0-9]#';
ログイン後にコピー

アトム:

可視アトム: Unicode エンコード テーブル内の肉眼で見える文字キーボード出力後、例: Punctuation; . / ? または、英語文字、中国語文字などの可視文字
不可視アトム: キーボード出力後に肉眼では見えない Unicode エンコード テーブル内の文字。 : newline \n、Tab \t、space Wait、
一般的にはこれら 3 つだけが使用されます (改行文字だけが照合できないため、通常、改行文字は他の文字と一緒に照合されます)
ヒント: ' を追加する必要があります。一致する演算子の前に \' を付けます。例: ' ' 記号、一致する場合は、'\ '

メタキャラクタ

アトム フィルタリング メソッド:

| 2 つ以上の分岐選択に一致します。
[] は角括弧内の任意の原子に一致します。
[^] は角括弧内の原子を除く任意の文字に一致します。
例: Duang|duang または [Dd ]uang は Duang と duang の両方に一致します
インターバル書き込み: [a-z] は a ~ z の文字に一致し、[0-9] は 0 ~ 9 の文字に一致します。 [a-z0-9]
とすることもできます。改行文字を除く任意の文字に一致します。
\d は任意の 10 進数の数字に一致します。つまり、{0-9]
\D は任意の 10 進数以外の数字に一致します。 [^0-9] は、[^\d]
\s が目に見えない原子に一致することと同等です。つまり、[\f\n\r\t\v]
\S は目に見える原子に一致します。 [\f\n\r\t\v] は、[\s]z
\w と同等で、任意の数字、文字、またはアンダースコアに一致します。つまり、[0-9a-zA-Z_]
\ W は、数字、文字、またはアンダースコア以外の任意の [0-9a-zA-Z_] に一致し、[\w]

#quantifier

## と同等です。 ## {n} は、その前の原子が正確に n 回出現することを意味します。
[n] は、前のアトムが少なくとも n 回出現することを意味します。

{n,m} は少なくとも n 回、最大で m 回出現します。
* は 0 回、1 回または複数回一致します。つまり、 {0,}
1 回以上一致、つまり {1,}
? 0 回または 1 回一致、つまり {0,1}

境界制御

#^ 文字列の開始位置と一致します

$ 文字列の終了位置と一致します
例: ^John は John と一致しますが、123John と一致することはできません。文字列が John で始まるように指定されているため、



Pattern Unit

() は、その全体がアトムとして一致します。たとえば、(X|x) )iaomi、xiaomi と一致する可能性があります

修正モード

貪欲なマッチング

マッチング結果があいまいな場合は、長い方 (デフォルト)

遅延マッチング

マッチング結果があいまいな場合は、短い方を選択してください。正規表現の「/」の後に「U」を追加するだけです。 、'/[0-9]/U' など;例:

Copy$subject = "test__123123123";
preg_match('/test.+123/', $subject, $matches); //贪婪模式  var_dump($matches);
preg_match('/test.+123/U', $subject, $matches); //懒惰模式var_dump($matches);
ログイン後にコピー

一般的な修正パターン:

U 遅延マッチング

i 大文字と小文字は無視します。英語の文字
#xx 正規表現の空白文字を無視します

s メタ文字「.」を改行を含むすべての文字に一致させます


共通関数

#preg_matchマッチングを実行する正規表現

preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) : int
ログイン後にコピー

pattern: 検索するパターン、文字列型。件名: 入力文字列。 match: パラメータ match が指定されている場合、検索結果が入力され、データ構造は 1 次元配列になります。 flags: 検索結果の 0 番目の要素を一致した文字列として使用し、最初の要素を対応するオフセット (位置) として使用して、PREG_OFFSET_CAPTURE に設定できます。 offset: 検索はターゲット文字列の開始位置から開始されます。

戻り値: 一致の数

関数 preg_match_all と同様に、パラメータは preg_match と一致します

違い:

preg_match: 検索のデータ結果である 1 回のみ一致します構造一致は 1 次元配列 preg_match_all : 全一致、検索結果一致のデータ構造は 2 次元配列です。

preg_replace

正規表現の検索と置換を実行し、戻り値は置換された文字列

preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed
ログイン後にコピー

pattern: 検索対象のパターンです。文字列または文字列の配列を指定できます。 replace: 置換される文字列または文字列の配列 subject: 検索および置換される文字列または文字列の配列。制限: 置換の最大数。デフォルトは -1 (無制限) です。 count: 置換の数。

関数 preg_filter と同様に、パラメーターは preg_replace と同じです

違い (違いは、照合に配列を使用する場合にのみ確認できます): preg_replace: 置換の有無に関係なく、すべての結果を返します preg_filter: のみを返します一致する結果。

preg_split

正規表現で文字列を区切る

preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) : array
ログイン後にコピー

$pattrn:用于搜索的模式,字符串形式。subject:输入字符串limit:将限制分隔得到的子串最多只有limit个,返回的最后一个 子串将包含所有剩余部分。flags:有以下标记的组合:
-- 1. PREG_SPLIT_NO_EMPTY: 返回分隔后的非空部分。
-- 2. PREG_SPLIT_DELIM_CAPTURE: 用分隔符'()'括号把匹配的捕获并返回。
-- 3. PREG_SPLIT_OFFSET_CAPTURE: 匹配返回时将会附加字符串偏移量

PREG_SPLIT_DELIM_CAPTURE这个参数可能比较难明白,举个例子看看:

Copy$subject = "1a23b";  
$a = preg_split('/[\d]/', $subject, -1, PREG_SPLIT_NO_EMPTY);  
var_dump($a);  
$a = preg_split('/([\d])/', $subject, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
var_dump($a);
ログイン後にコピー

输出如下:

array (size=2)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
array (size=5)
0 => string '1' (length=1)
1 => string 'a' (length=1)
2 => string '2' (length=1)
3 => string '3' (length=1)
4 => string 'b' (length=1)

preg_grep

返回匹配模式的数组条目

preg_grep ( string $pattern , array $input [, int $flags = 0 ] ) : array
ログイン後にコピー

$pattern:要搜索的模式,字符串形式$input:输入数组flags:如果不设置则返回匹配的数目,设置PREG_GREP_INVERT则返回不匹配的数目。

preg_quote

转义正则表达式字符,返回为转义后的字符串

preg_quote ( string $str [, string $delimiter = NULL ] ) : string

str:输入字符串delimiter:需要转义的字符串

以上が一般的に使用される PHP 正規表現と文法注釈のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!