基本構文
区切り文字:
正規表現の先頭と末尾を識別します。「/」または「」を使用します。 #' または '{ }' は、構文 '{ }' が正規表現演算子である可能性があるため、混乱を避けるために使用することはお勧めできません。推奨される使用法は次のとおりです。
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 サイトの他の関連記事を参照してください。