正規表現言語は、リテラル (通常の) テキスト文字とメタキャラクターという 2 つの基本的な文字タイプで構成されます。
関連する推奨事項:
1. 正規表現構文チュートリアル (オンライン テスト ツールを含む)
2. PHP 正規表現の簡単な紹介ビデオ チュートリアル
メタキャラクターは正規表現を使用して処理できます。メタキャラクターは、[ ]
に配置された任意の 1 文字 (たとえば、[a]
は 1 つの小文字a
と一致することを意味します)、または一連の文字 (たとえば、[a-d]
は、a、b、c、d
の間の任意の文字と一致することを意味し、\w
は任意の英字、数字、アンダースコアを意味します)、共通メタキャラクター
文字 | 説明 | 特別な指示 |
---|---|---|
#.
| 改行文字 (
\n) | ~## を除く任意の文字と一致します。
|
| a b c d e
の任意の文字と一致します。すべての文字は | または # です##. 関係
|
は、 a | から
hまでの任意の文字と一致します。 #~
|
[^fgh] |
はと一致しません fgh の文字は # と一致します | ##.
否定を示すには、角括弧[ ] の最初の文字の前に #^ | を追加します
角括弧内にある文字とは一致しません括弧 \w |
#~ |
##\W |
は ## の反対です#\w | は
~ |
\s と同等です
| は任意の空白文字に一致します。
[\f\n\r\t\v] |
と同等です。 |
\S
| は
\s | の逆で、
~ と同等です。 |
\d
| は、0 ~ 9 の任意の 1 桁に一致し、
[0-9] |
| ##\D
# は | \d
の逆で、 | [^0- と同等です。 9]
~
|
#[\u4e00-\u9fa5] 任意の単一の | 中国語文字と一致します(中国語)
(ここでは、 | Unicode
~
|
\b 単語の先頭または末尾と一致します。 |
~ |
^ |
単語の先頭と一致します。文字列 | を括弧の最初の文字の前に置くと、 |
$ | ## という逆数を意味する
になります。 | #文字列の末尾と一致する~ |
正規表現修飾子 関数: の出現数を制限します。この記号の前の | ユニット
ユニット: |
#以前に長い文字列を囲むためにかっこを使用した場合は、かっこ全体がユニットとみなされます
上記のメタ文字はすべて一致します。単一の文字。複数の文字を同時に一致させたい場合は、修飾子を使用する必要があります。一般的な修飾子をいくつか次に示します (下の表の
特別な指示
^ などの
グループを形成できます。 (13)[4-9]\d{8}$
は、13 で始まる任意の携帯電話番号を表します。
abcabcabc
は 1 回以上出現する最後の文字c
を表し、(abcabcabc)
は文字列全体を表しますabcabcabc
が 1 回以上表示されます。|
を使用してまたは
の関係を示すことができます。たとえば、z|j|q
は次のことを示します。一致するz、j、q
の任意の文字。実際、これは[zjq]
と同等です。
ab|cd|ef
は、ab
、cd
、またはef
のいずれかを意味します。a(b|cd|e)f
の意味:a
で始まり、b
またはcd
どちらかe
はf
で終わります。|
(または
) の唯一の境界は括弧(( )
)この規則をどのように理解していますか?
と
?が
角括弧内にある場合、、.、
?となります。
通常の文字。ドットと疑問符です。[ ]の優先度が
. や ?の優先度よりも高いことがわかります。
と正確に一致します。ここで、
. と ?は完全に通常の文字として扱われることに注意してください。
|(または) を使用します。
定義範囲: 先頭、末尾、括弧
# は、0 から複数のメタキャラクタに一致します。 | {0,} | ~ |
---|---|---|
?
| は 0 ~ 1 個のメタキャラクタに一致します。
{0,1}
| ~
|
# は少なくとも 1 つのメタキャラクターに一致します。 | {1,}
~ |
|
n 個のメタ文字に一致 |
~
|
{n, } |
少なくとも n 個のメタ文字に一致します ~ |
{n,m} | |
n ~ m 個のメタ文字に一致します ~ |
\b | |
単語の境界を一致させる ~ |
#^ | |
~ |
$ | |
~ |
上級 1 - 複数選択構造複数選択構造は、実際にはメタキャラクター |
概要: 複数選択構造には多くの文字を含めることができますが、括弧
の境界を超えることはできません。
単純な IP アドレス一致式
を記号として、左から右に最初のグループ番号 グループ番号は 1、2 番目は 2、というように
となります。例:
は重複を照合するために使用できます
を使用して前に括弧を使用して分割 (グループ化) し、その後、括弧と引用符
で一致した内容を\1、\2## を使用して後ろに配置します。 #などで表します。 (最初のかっこは
\1...)括弧内に括弧が入れ子になっている場合
(\w (.?))覚えておいてください: この時点では、括弧を左から右に数える記号として
(を使用する必要があります。 .
上級 3 - Look Around (ゼロ幅アサーション)
$
like that.周りを見回すと文字数が占有されません。
周りを見渡すと # に分かれます## orderreverse orderと一致します。例:
(?=\d)現在の位置の右側は数値です。
(? !exp)次の
位置は一致できません例:
(?!\d)現在の位置の右側
逆順
(?<=\d)
現在位置の左側 数値(?< ;!exp)
。位置の前のは
(?!\d )
現在の位置は数値ではありません。
通常の動作は、できるだけ多くの文字と一致することです
.
正規表現:a.*b
、a# で終わる最長の文字と一致します。 ## で始まりbを検索すると、文字列
aabab全体と一致します。これは -- と呼ばれます。 -----
貪欲なマッチング
-
さらに
遅延マッチング、つまり指定されたとおりにできるだけ少ない文字をマッチングする必要があります。上記のすべての量指定子は、遅延マッチング パターンに変換できます。後ろに疑問符を追加するだけです。
a.*?bは、
で始まる最も短いものと一致します。 a、bに適用すると、
aabと
abに一致します。
概要:
貪欲モードと遅延モードの違いは次のとおりです:
遅延モード疑問符
がもう 1 つあります。上級 5 - パターン マッチングの優先順位
を持つ操作は最初に高く、次に正規表現を使用する場合は、マッチングの順序に注意する必要があります。通常、同じ優先度
が左から右の
に計算され、異なる優先度
意味 | |
---|---|
Windows98|Windows2000|WindowsXP
| は、
Windows98または Windows2000または WindowsXP
| # と一致します
| Windows98
で始まるか、Windows2000 が含まれるか、または WindowsXPで終わる注 |の境界は先頭、末尾、括弧のみであるため、 # と$ は両方とも| の範囲に含まれます。
|
| Windows
その後98 または2000 orXP
|
#注文 | メタキャラクター | 説明 |
---|---|---|
\
| エスケープ文字
||
()、 (?:)、 (?=)、 [] #モード単位と原子テーブル |
||
* | , ,? 、{n} 、{n,} 、{n,m} 重複一致 |
|
、$ 、\b 、\B 、\A 、\Z 国境制限 |
##5 | |
| | パターンの選択
|
例 |
と書きますか?2 質問: PHP の
preg_match関数が、上記の
\$# # と一致させるために
一重引用符と
二重引用符の式を使用している場合#、書き方?答え:
式に必要なルールは\\\$
を表現します。 (見やすくするために、
'/\\ \\ \\ $/'上記の文字列を表すには二重引用符を使用します
"/\\ \\ \\\$/「。 (見やすくするために、
"/\\ \\ \\ \$/"何を質問していますか?
PHP の一重引用符は文字をエスケープせず、\のみをエスケープします。式を生成するには 6
\
エスケープ\
に加えて、二重引用符は\も必要となるため、7 つの ## が必要になります。 #\
。推奨される関連チュートリアル:
PHP ビデオ チュートリアル
以上が正規表現の詳しい解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。