?$regex = '/^http://([w.]+)/([w]+)/([w]+).html$/i';
$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';
$matches = 配列();
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
エコー「n」;
preg_match の $matches[0] には、パターン全体に一致する文字列が含まれます。
「#」区切り文字を使用したコードは以下の通りです このとき、「/」はエスケープされません。
?$regex = '#^http://([w.]+)/([w]+)/([w]+).html$#i';
$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';
$matches = 配列();
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
エコー「n」;
修飾子: 正規表現の動作を変更するために使用されます。
('/^http://([w.]+)/([w]+)/([w]+).html/i') の最後の「i」は修飾子であり、無視することを意味します私たちがよく使うもう 1 つの文字は、スペースを無視することを意味する「x」です。
貢献コード:
?$regex = '/HELLO/' ;
$str = 'こんにちは';
$matches = 配列();
if(preg_match($regex, $str, $matches)){
echo 'いいえ i: 有効に成功しました!',"n";
}
if(preg_match($regex.'i', $str, $matches)){
echo 'YES i:有効成功!',"n";
}
文字フィールド: [w]角括弧で展開された部分が文字フィールドです。
修飾子: [w]{3,5}、[w]*、[w]+ など、[w] の後の記号はすべて修飾子を表します。具体的な意味をご紹介します。
{3,5} は 3 ~ 5 文字を意味します。 {3,} は 3 文字を超え、{,5} は最大 5 文字、{3} は 3 文字です。
* は 0 からそれ以上を意味します
+ は 1 からそれ以上を意味します。
キャレット
^:
放 & gt; 文字ドメイン ([^w] など) を入力して、否定 (意味を除く) を示します - 「選択を反転」
️式の前に配置して、現在の文字から始めることができます。 (/^n/i、n で始まることを意味します)。
よく「エスケープ文字」と呼ぶことに注意してください。 「.」、「/」などの特殊記号をエスケープするために使用されます
境界文字: 正規表現の形式は一般に次のとおりです:
/愛/
「/」区切り文字間の部分は、ターゲット オブジェクト内で照合されるパターンです。
メタキャラクター: 正規表現で特別な意味を持つ特殊文字を指します。これを使用して、ターゲット オブジェクト内の先頭の文字 (つまり、メタキャラクターの前の文字) の出現パターンを指定できます。
より一般的に使用されるメタ文字には、「+」、「*」、「?」などがあります。
「+」メタ文字は、その先頭文字がターゲット オブジェクト内に 1 回以上出現する必要があることを規定します
「*」メタキャラクターは、その先頭文字がターゲット オブジェクト内に 0 回または連続して出現する必要があることを規定します。
「?」メタキャラクタは、その先頭文字がターゲット オブジェクト内に 0 回または 1 回出現する必要があることを規定します。
次に、正規表現メタキャラクターの具体的な用途を見てみましょう。
/fo+/
上記の正規表現には「+」メタ文字 (その前の「o」が先頭文字) が含まれているため、文字 f の後に「fool」、「fo」などの 1 つ以上の文字が連続して出現する可能性があることを意味します。ターゲット オブジェクトの .o は文字列と一致します。
メタキャラクターに加えて、ユーザーは一致したオブジェクトにパターンが出現する頻度を正確に指定できます。たとえば、
/ジム{2,6}/
上記の正規表現では、文字 m が一致するオブジェクトに 2 ~ 6 回連続して出現できると規定されているため、上記の正規表現は jimmy や jimmmmy などの文字列と一致します。
他のいくつかの重要なメタキャラクターの使用方法。
s: タブ キーや改行文字を含む単一のスペース文字と一致するために使用されます。
S: 単一のスペース文字を除くすべての文字と一致するために使用されます
d: 0 から 9 までの数字と一致するために使用されます。
w: 文字、数字、またはアンダースコア文字と一致するために使用されます。
W: w に一致しないすべての文字に一致するために使用されます ;
. : 改行文字を除くすべての文字と一致するために使用されます。
(説明: s と S、w と W は相互の逆演算と考えることができます)
以下では、例を通して正規表現で上記のメタキャラクターを使用する方法を見ていきます。
/s+/
上記の正規表現は、ターゲット オブジェクト内の 1 つ以上のスペース文字と一致するために使用できます。
上で紹介したメタキャラクターに加えて、正規表現にはロケーターという別の固有の特殊文字もあります。
ロケーター: ターゲット オブジェクト内で一致するパターンが表示される場所を指定するために使用されます。
より一般的に使用されるロケーターには、「^」、「$」、「b」、「B」などがあります。
「^」ロケーターは、一致するパターンがターゲット文字列の先頭に現れる必要があることを指定します
「$」ロケーターは、一致するパターンがターゲット オブジェクトの最後に表示される必要があることを指定します
b ロケーターは、一致するパターンがターゲット文字列の先頭または末尾の 2 つの境界のいずれかに出現する必要があることを指定します
「B」ロケーターは、一致するオブジェクトがターゲット文字列の先頭と末尾の 2 つの境界内に配置される必要があることを規定しています。つまり、一致するオブジェクトをターゲット文字列の先頭または末尾として使用することはできません。同様に、私たちも
「^」と「$」、「b」と「B」は、互いに逆演算である 2 セットのロケーターとみなすこともできます。例:
/^地獄/
上記の正規表現には「^」ロケーターが含まれているため、ターゲット オブジェクト内の「hell」、「hello」、または「hellhound」で始まる文字列と一致します。
/ar$/
上記の正規表現には「$」ロケーターが含まれているため、ターゲット オブジェクト内の「car」、「bar」、または「ar」で終わる文字列と一致します。
/ボム/
上記の正規表現パターンは「b」ロケーターで始まるため、ターゲット オブジェクト内の「bomb」または「bom」で始まる文字列と一致します。
/マンブ/
上記の正規表現パターンは「b」ロケーターで終わるため、ターゲット オブジェクト内の「human」、「women」、または「man」で終わる文字列と一致します。
ユーザーがより柔軟に照合パターンを設定できるようにするため、正規表現を使用すると、特定の文字に限定されず、照合パターン内の一定の範囲を指定できます。例:
/[A-Z]/
上記の正規表現は、A から Z までの任意の大文字と一致します。
/[a-z]/
上記の正規表現は、a から z までの範囲内の任意の小文字と一致します。
/[0-9]/
上記の正規表現は、0 から 9 までの任意の数値と一致します。
/([a-z][A-Z][0-9])+/
上記の正規表現は、「aB0」などの文字と数字で構成される任意の文字列と一致します。ここでユーザーが注意する必要があるのは、正規表現で「()」を使用して文字列を結合できることです。
「()」記号: 含まれるコンテンツはターゲット オブジェクト内に同時に出現する必要があります。したがって、「abc」の最後の文字は数字ではなく文字であるため、上記の正規表現は「abc」などの文字列には一致しません。 プログラミング ロジックの「OR」演算に似た正規表現を実装し、複数の異なるパターンのいずれかを選択して一致させる場合は、パイプ文字「|」を使用できます。例:
/へ|も|2/
上記の正規表現は、ターゲット オブジェクトの "to"、"too"、または "2" に一致します。
否定文字:「[^]」。先ほど紹介したロケーター「^」とは異なり、否定文字「[^]」は、パターンで指定された文字列が対象オブジェクト内に存在できないことを指定します。例:
/[^A-C]/
上記の文字列は、A、B、C を除くターゲット オブジェクト内の任意の文字と一致します。一般に、「[]」内に「^」がある場合は否定演算子とみなされ、「[]」の外側に「^」がある場合、または「[]」がない場合は否定演算子とみなされます。オペレーター。
最後に、ユーザーが正規表現パターンにメタキャラクターを追加し、一致するオブジェクトを見つける必要がある場合は、 を使用できます。
エスケープ:「」。例:
/こ*/
上記の正規表現は、対象オブジェクト内の「The」などではなく「Th*」と一致します。
実践体験紹介
^ と $ についてはまだ説明する必要があります。これらはそれぞれ文字列の先頭と末尾を一致させるために使用されます:
"^The": 先頭に "The" の文字列が必要です。
"of絶望$": 末尾に「絶望」を含む文字列が必要です ;
それで、
"^abc$": abc で始まり abc で終わる文字列が必要です。実際には、abc のみが一致します。
"notice": 通知 を含む文字列と一致します。
先ほど述べた 2 つの文字 (最後の例) を使用しない場合、チェック対象の文字列のどこにでもパターン (正規表現) を出現させることができ、両側にロックしていないことがわかります。
次に、「*」「+」「?」について説明します
これらは、文字が表示される数または順序を表すために使用されます:
「0 個以上」は {0,} と同等です
「1 つ以上」は {1,} と同等です
「0 または 1」は {0,1} に相当します。
以下にいくつかの例を示します:
"ab*": ab{0,} と同義。一致は a で始まり、その後に 0 または N b の文字列が続く場合があります ("a"、"ab"、"abbb" など)。
"ab+": ab{1,} と同義。上記と同じですが、少なくとも 1 つの b ("ab" "abbb" など) が必要です。
"ab?": ab{0,1} と同義。b は存在しないか、1 つだけ存在する可能性があります
"a?b+$": 1 または 0 a と 1 つ以上の b で終わる文字列と一致します。
重要なポイント: 「*」「+」および「?」はその前の文字のみを考慮します。
中括弧内の文字数を制限することもできます。例:
"ab{2}": a の後には 2 つの b (それ以上) が続く必要があります ("abb")。
"ab{2,}": a の後には 2 つ以上の b が必要です ("abb" "abbbb" など)。
"ab{3,5}": a の後には 2 ~ 5 個の b ("abbb"、"abbbb"、または "abbbbb") が必要です。
次に、特定の文字を括弧で囲みます。例:
"a(bc)*": a の後に 0 または 1 つの "bc" が続くものと一致します。
「a(bc){1,5}」: 1 ~ 5 「bc」;
OR 演算に相当する文字「|」もあります:
"hi|hello": "hi" または "hello" を含む文字列と一致します。
「(b|cd)ef」: 「bef」または「cdef」を含む文字列と一致します。
"(a|b)*c": 複数の (0 を含む) a または b の後に が続く文字列と一致します。
ドット (「.」) は、「 」を除くすべての単一文字を表すことができます
「」を含むすべての単一文字に一致させたい場合はどうすればよいでしょうか?
「[ .]」パターンを使用します。
"a.[0-9]": a と文字と 0 から 9 までの数字
"^.{3}$": 任意の 3 文字で終わります。
角かっこで囲まれたコンテンツは 1 文字のみと一致します
"[ab]": 単一の a または b ("a│b" と同じ) に一致します。
"[a-d]": 'a' から 'd' までの 1 文字に一致します ("a│b│c│d" および "[abcd]" と同じ効果)。
通常、文字を英語の大文字と小文字で指定するには [a-zA-Z] を使用します。
"^[a-zA-Z]": 大文字と小文字で始まる文字列と一致します。
"[0-9]%": x% を含む文字列と一致します。
",[a-zA-Z0-9]$": カンマで終わり、その後に数字または文字が続く文字列と一致します。角括弧内に入れたくない文字をリストすることもできます。「%[^a-zA-Z]%」は 2 つのパーセント記号と一致します。アルファベット以外の文字列。
重要: 角括弧の先頭に ^ を使用すると、角括弧内の文字が除外されることを意味します。
PHP がこれを解釈するには、これらの文字の前後に「」を追加し、一部の文字をエスケープする必要があります。
括弧内の文字はこの規則の例外であることを忘れないでください。括弧内では、(") を含むすべての特殊文字はその特別なプロパティを失います。「[*+?{}.]」は、次の文字列を含む文字と一致します。
また、regx マニュアルには次のように書かれています。「リストに ']' が含まれる場合、それをリストの最初の文字 (おそらく '^' に続く) として使用するのが最善です。それに '-' が含まれる場合は、次のようにするのが最善です。使い方は前か最後に置いてください
、または範囲 [a-d-0-9] の 2 番目の終点の中央にある「-」が有効になります。
上の例を読めば、{n, m} が理解できるはずです。 n も m も負の整数にすることはできず、n は常に m より小さいことに注意してください。このようにして、少なくとも n 回、最大で m 回照合できます。たとえば、「p{1,5}」は に一致します。
「pvpppppp」の最初の 5 つの p
から始まる話をしましょう
b この本には、単語の境界を一致させるために使用されると書かれています。つまり...たとえば「veb」ですが、love の ve には一致しますが、very の ve には一致しません
B は上記の b の逆です。
正規表現のその他の使用法
文字列を抽出する
ereg() と eregi() の 1 つの機能により、ユーザーは正規表現を使用して文字列の一部を抽出できます (具体的な使用法についてはマニュアルを参照してください)。たとえば、次のコードのようにパス/URL からファイル名を抽出したいとします
必要なのはコードです:
ereg(”([^/]*)$”, $pathOrUrl, $regs);
エコー $regs[1];
高度な置換
ereg_replace() と eregi_replace() も、区切られたすべての負符号をカンマで置き換えたい場合に非常に便利です:
ereg_replace("[ t]+", ",", トリム($str));
以下、引用内容です
preg_match() と preg_match_all()
preg_quote()
preg_split()
preg_grep()
preg_replace()
関数の具体的な使用法については、PHP マニュアルを参照してください。ここでは、私たちが蓄積した正規表現をいくつか紹介します。
アクション属性の一致
以下、引用内容です
コードは次のとおりです
コードをコピー |
|
$str = '';
$match = '';
Preg_match_all('/s+action="(?!http:)(.*?)"s/', $str, $match );
print_r($match);
| 正規表現でコールバック関数を使用する
以下、引用内容です
コードは次のとおりです
コードをコピー
| /**
* 一部の文字列をコールバック関数で置き換えます |
*
*/
関数 callback_replace() {
$url = 'http://esfang.house.sina.com.cn';
$str = '';
$str = preg_replace ( '/(?<=saction=")(?!http:)(.*?)(?="s)/e', 'search($url, 1)', $str ) ;
エコー $str;
}
関数検索($url, $match){
$url '/' を返します。
}
アサーションとの定期的なマッチング
以下、引用内容です
コードは次のとおりです |
コードをコピー |
$match = '';
$str = 'xxxxxx.com.cn 太字フォント
段落テキスト
;
Preg_match_all ( '/(?<=<(w{1})>).*(?=1>)/', $str, $match );
echo "属性を持たない HTML タグのコンテンツと一致します:";
print_r ( $match );
| HTMLソースコード内のアドレスを置き換えます
以下、引用内容です
コードは次のとおりです
コードをコピー
|
$form_html = preg_replace ( '/(?<=saction="|ssrc="|shref=")(?!http:|javascript)(.*?)(?="s)/e', 'add_url ($url, '1')', $form_html );
|
メタキャラクター
上記の例では、^、d、$ などの記号は特定の一致する意味を表しており、一般的に使用されるメタキャラクターは次のとおりです。
|
メタキャラクター
手順
.
| 改行文字を除く任意の文字と一致します
|
w
| 文字、数字、アンダースコアを一致させます
|
す
| 任意の空白文字と一致します
|
d
| 番号を一致させる
|
b
| 単語の先頭または末尾を一致させる
|
^
| 文字列の先頭と一致する
|
$
| 文字列の末尾を一致させる
|
[x]
| 文字列内の a、b、c 文字と一致するなど、x 文字と一致します
|
わ
| w の対義語。文字、数字、アンダースコア、漢字以外の文字に一致します
|
S
の逆で、空白以外の文字 | に一致します。
|
D
d の逆で、数字以外の文字に一致します |
|
B
b の対義語、つまり、単語の先頭または末尾ではありません |
|
[^x]
[^abc] など、x を除く任意の文字と一致します。 abc を除く任意の文字と一致します |
|
|
|
http://www.bkjia.com/PHPjc/632170.html | www.bkjia.com
truehttp://www.bkjia.com/PHPjc/632170.html
技術記事 PHP 正規表現の一般的なパターンの区切り文字。通常、開始と終了の区切り文字として / を使用します。# を使用することもできます。 # をいつ使用するか? 通常、文字列に / 文字がたくさんある場合...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31
|