亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

基本的な PHP 開(kāi)発チュートリアル: 正規(guī)表現(xiàn)のパターン修飾子

1. 問(wèn)題の概要

メタキャラクターとアトムによる正規(guī)表現(xiàn)表現(xiàn)の入門(mén)は完了しました。まだ対処する必要がある特殊な狀況がいくつかあります。

abc が 2 行目の先頭にある場(chǎng)合に一致させるにはどうすればよいですか?
正規(guī)表現(xiàn)ですべてを一致させることにあまり欲張らないようにしたいのですが、一部にしか一致しない場(chǎng)合はどうすればよいですか?

現(xiàn)時(shí)點(diǎn)では、通常の機(jī)能を強(qiáng)化するために次のパターンマッチングを使用する必要があります。

一般的に使用されるパターン マッチング文字は次のとおりです:

23.png

パターン マッチング文字の使用方法は次のとおりです:

/ 正規(guī)表現(xiàn)表現(xiàn) / パターン マッチング文字

パターン マッチング文字はこの文の末尾に配置されます。 。例:

/w+/s

形式を明確に理解する 次に重要なことは、パターン マッチング記號(hào)の使用についての理解と記憶を強(qiáng)化することです。このコードを使用して、パターン マッチング文字を追加する場(chǎng)合と追加しない場(chǎng)合の違いを理解します

2. 大文字と小文字は區(qū)別されません

<?php
//在后面加上了一個(gè)i
$pattern = '/ABC/i';
$string = '8988abc12313';
$string1 = '11111ABC2222';
if(preg_match($pattern, $string, $matches))
{ echo '匹配到了,結(jié)果為:'; var_dump($matches); }
else{ echo '沒(méi)有匹配到'; }
?>

結(jié)論として、$string と $string1 は両方とも正常に一致します。そのため、最後に i を付けた後は、一致する內(nèi)容の大文字と小文字が區(qū)別できなくなります

3. m は複數(shù)行とみなされます

正規(guī)表現(xiàn)で一致させる場(chǎng)合、通常、対象の文字列は1 行として一致します。

「行頭」メタキャラクタ (^) は文字列の先頭にのみ一致し、「行末」メタキャラクタ ($) は文字列の末尾にのみ一致します。

この修飾子が設(shè)定されている場(chǎng)合、「行の開(kāi)始」と「行の終了」は文字列全體の先頭と末尾に一致するだけでなく、それぞれ文字列內(nèi)の改行文字の前後にも一致します。

注: 一致する文字列に「n」文字がない場(chǎng)合、またはパターンに ^ または $ がない場(chǎng)合、この修飾子を設(shè)定しても効果はありません。

実験とコードを通じてこの機(jī)能を検証してみましょう:

最初の一致では、一致が失敗することがわかります:

<?php
$pattern = '/^a\d+/';
$string = "我的未來(lái)在自己手中我需要不斷的努力
a9是一個(gè)不錯(cuò)的字符表示
怎么辦呢,其實(shí)需要不斷奮進(jìn)";
 
if (preg_match($pattern, $string, $matches)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($matches);
} else {
    echo '沒(méi)有匹配到';
}
?>

2 番目の一致では、m を追加します Try:

<?php
$pattern = '/^a\d+/m';
$string = "我的未來(lái)在自己手中我需要不斷的努力
a9是一個(gè)不錯(cuò)的字符表示
怎么辦呢,其實(shí)需要不斷奮進(jìn)";
if (preg_match($pattern, $string, $matches)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($matches);
} else {
    echo '沒(méi)有匹配到';
}
?>

Result:

As右に表示されています

試合は成功しました。 /^ad+/ 一致するコンテンツは a9 であり、これは行の先頭にある必要があります。 2 行目も正常に一致します。

4. s は 1 行として扱われます

この修飾子が設(shè)定されている場(chǎng)合、パターン內(nèi)のドット メタ文字 (.) は改行を含むすべての文字と一致します。

1回目、パターンマッチング文字sを追加せず:

<?php
$pattern = '/新的未來(lái).+\d+/';
$string = '新的未來(lái)
987654321';
if (preg_match($pattern, $string, $matches)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($matches);
} else {
    echo '沒(méi)有匹配到';
}
?>

2回目、正規(guī)表現(xiàn)の後にパターンマッチング文字sを追加:

<?php
$pattern = '/新的未來(lái).+\d+/s';
$string = "新的未來(lái)
987654321";
if (preg_match($pattern, $string, $matches)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($matches);
} else {
    echo '沒(méi)有匹配到';
?>

結(jié)果は以下のようになり、マッチングは成功しました。

結(jié)論:

1. 新しい future では、future

2 の後に改行があるため、(ドット) は空白文字以外のすべての文字に一致します。したがって、1回目は失敗しました

3. 2回目は、sパターンマッチャーを追加しました。 . (ドット) を追加すると、すべての文字と一致するためです。

5. x は空白文字を無(wú)視します

1. この修飾子が設(shè)定されている場(chǎng)合、パターン內(nèi)の空白文字は、エスケープされた文字または文字クラス內(nèi)の文字を除き、完全に無(wú)視されます。

2. エスケープされていない文字クラスの外側(cè)の # 文字と次の改行文字の間の文字も無(wú)視されます

まずは空白行を無(wú)視するなどの機(jī)能を試してみましょう:

<?php
$pattern = '/a b c /x';
$string = '學(xué)英語(yǔ)要從abc開(kāi)始';
if (preg_match($pattern, $string, $matches)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($matches);
} else {
    echo '沒(méi)有匹配到';
}
?>

これも正常に一致します。

$pattern にはスペースがあり、各 abc の後にはスペースがあります。 $string にはスペースは含まれません。
つまり、x は空白文字を無(wú)視します。

2番目の文は文字通り理解するのがさらに困難です、

<?php
//重點(diǎn)觀察這一行
$pattern = '/a b c #我來(lái)寫(xiě)一個(gè)注釋
/x';
$string = '學(xué)英語(yǔ)要從abc開(kāi)始';
if (preg_match($pattern, $string, $matches)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($matches);
} else {
    echo '沒(méi)有匹配到';
}
?>

結(jié)果も成功した試合です!

結(jié)論: x の 2 番目の特徴は無(wú)視されることであることがわかりました。# 文字と次の改行文字の間の文字も無(wú)視されます。

6. e 一致する項(xiàng)目を見(jiàn)つけて置換します

  • e モードは逆參照とも呼ばれます。主な機(jī)能は、正規(guī)表現(xiàn)の括弧內(nèi)の內(nèi)容を取り出し、それを置換項(xiàng)目に入れて元の文字列を置き換えることです。

  • このパターンマッチャーを使用する前に preg_replace() を使用する必要があります。

mixed preg_replace (mixed $registry match,mixed $replacement,mixed $search string)

  • preg_replaceの関數(shù): $regulator matchを使用して$search文字列変數(shù)を検索します。次に、$replacement 変數(shù)を使用してそれを置き換えます。

正式な説明の前に、これまでの知識(shí)を確認(rèn)してみましょう。一致する各原子の周りに括弧を付けました。

<?php
//加上了括號(hào)
$pattern = '/(\d+)([a-z]+)(\d+)/';
$string = '987abc321';
if (preg_match($pattern, $string, $match)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($match);
} else {
    echo '沒(méi)有匹配到';
}
?>

右側(cè)の結(jié)果を見(jiàn)てみましょう

これは、前に括弧について話した?jī)?nèi)容です。 : 一致したコンテンツの外側(cè)に括弧があります。括弧內(nèi)の內(nèi)容も配列の要素に配置されます。寫(xiě)真に示すように: 987、abc、321。

次に正規(guī)表現(xiàn)の e パターンを見(jiàn)てみましょう:

<?php
$string = "{April 15, 2003}";
//'w'匹配字母,數(shù)字和下劃線,'d'匹配0-99數(shù)字,'+'元字符規(guī)定其前導(dǎo)字符必須在目標(biāo)對(duì)象中連續(xù)出現(xiàn)一次或多次
$pattern = "/{(\w+) (\d+), (\d+)}/i";
$replacement = "$2";
//字符串被替換為與第 n 個(gè)被捕獲的括號(hào)內(nèi)的子模式所匹配的文本
echo preg_replace($pattern, $replacement, $string);
?>

右側(cè)の結(jié)果を観察してください

結(jié)論:

上の例では、$2 は正規(guī)表現(xiàn)の最初 (d+) を指します。また15個(gè)取り出すのと同じです

交換するときは$2と書(shū)きます。一致した項(xiàng)目を取り出して、再度一致結(jié)果を置き換えるのに使用されます。

7. U 貪欲モード制御

正規(guī)表現(xiàn)はデフォルトで貪欲、つまり可能な限り一致します。

正規(guī)表現(xiàn)がどれほど貪欲であるかを見(jiàn)てみましょう:

<?php
$pattern = '/<div>.*<\/div>/';
$string = "<div>你好</div><div>我是</div>";
if (preg_match($pattern, $string, $match)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($match);
} else {
    echo '沒(méi)有匹配到';
}
?>

結(jié)果を見(jiàn)て、次の結(jié)論を得ましょう。 「

Hello」から「I am

」まで直接一致します。最大一致が行われました。

同じコード部分に大文字の U を追加して、その効果を見(jiàn)てみましょう:

<?php
$pattern = '/<div>.*<\/div>/U';
$string = "<div>你好</div><div>我是</div>";
if (preg_match($pattern, $string, $match)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($match);
} else {
    echo '沒(méi)有匹配到';
}
?>

出力結(jié)果を観察してください:

一致するものだけが得られたことがわかりました:

<div>Hello</div>

このようにして、規(guī)則性という貪欲な機(jī)能がキャンセルされます。最も近い一致を見(jiàn)つけさせれば問(wèn)題ありません。

8. A はターゲット文字列の先頭から一致します

このモードは、メタキャラクターの ^ (サーカムフレックス) 効果に似ています。

<?php
$pattern = '/this/A';
$string = 'hello this is a ';
//$string1 = 'this is a ';
if (preg_match($pattern, $string, $match)) {
    echo '匹配到了,結(jié)果為:';
    var_dump($match);
} else {
    echo '沒(méi)有匹配到';
}
?>

結(jié)論:

Aモード修飾子を追加するときに$stringが一致できない場(chǎng)合は、追加せずに一致することができます

Aモード修飾子を追加したときに$string1が一致できる場(chǎng)合は、一致は最初から開(kāi)始する必要があります

9. D $ 文字の終わりの後には復(fù)帰はありません

この修飾子が設(shè)定されている場(chǎng)合、パターン內(nèi)のドルのメタ文字はターゲットの終わりとのみ一致します弦 。このオプションを使用しないと、ドル記號(hào)が改行文字の場(chǎng)合、最後の文字の前でも一致します。

<?php
$pattern = '/\w+this$/';
 //$pattern1 = '/\w+this$/D';
$string = "hellothis ";
 if (preg_match($pattern, $string, $match))
{ echo '匹配到了,結(jié)果為:'; var_dump($match); }
else
{ echo '沒(méi)有匹配到'; }
?>

結(jié)果は右の通りです

結(jié)論:

1. たとえば、パターンが $string と一致する場(chǎng)合、$string の文字列 this の後にキャリッジリターンがあります。 D マッチング文字を追加しなくても正常にマッチングすることもできます

2 たとえば、パターンが $string に一致する場(chǎng)合、D が追加されます。 $string の文字列 this の後にスペースがあるため、一致は失敗します。

學(xué)び続ける
||
<?php //在后面加上了一個(gè)i $pattern = '/ABC/i'; $string = '8988abc12313'; $string1 = '11111ABC2222'; if(preg_match($pattern, $string, $matches)) { echo '匹配到了,結(jié)果為:'; var_dump($matches); } else{ echo '沒(méi)有匹配到'; } ?>
提出するリセットコード
  • おすすめコース
  • コースウェアのダウンロード
現(xiàn)時(shí)點(diǎn)ではコースウェアはダウンロードできません。現(xiàn)在スタッフが整理中です。今後もこのコースにもっと注目してください?