国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

PHPの正規(guī)表現(xiàn)におけるメタキャラクター

メタキャラクター

は質(zhì)問(wèn)を投げます: d は文字の一致を表します。そして今、10 または 8 を一致させたいのですが、數(shù)字がいくつでもある場(chǎng)合はどうすればよいですか?

現(xiàn)時(shí)點(diǎn)ではメタキャラクターを使用する必要があります。アトムを使用すると、1 つの文字にのみ一致することがわかりましたが、複數(shù)の文字に一致する場(chǎng)合には問(wèn)題が発生します。
現(xiàn)時(shí)點(diǎn)では、原子を変更してより多くの機(jī)能を?qū)g現(xiàn)するためにメタキャラクターを使用する必要があります。

以下を恐れないでください。少しずつ実験していけばすべてが分かります。重要なことは、これらはより多用途であるということです。
覚えやすいように小さなカードを用意するのが最善です。

見(jiàn)てみましょう:

メタキャラクター関數(shù)の説明
*は、前のアトムとの一致、前の文字との0回または任意の回?cái)?shù)の一致を表します。
+ は、前の文字の 1 つ以上と一致します
? 前の文字はオプションです [オプション] はいまたはいいえ
. はアトムとしてカウントする必要があります。 n
document/2015-09-04/55e92c421434d またはを除くすべての文字と一致します。注: 優(yōu)先度は最も低くなります。
^はサーカムフレックス文字の後の文字列で始まらなければなりません
$$
b単語(yǔ)境界の前の文字で終わらなければなりません
B 非境界性
{m}はm回のみ出現(xiàn)できます
{n,m}はnからm回出現(xiàn)することができます
{m,}少なくともm回、最大數(shù)ですは制限事項(xiàng)ではありません
()優(yōu)先順位を変更したり、特定の文字列を全體として扱い、一致したデータを取り出して使用することもできます

+ は前の文字

<?php
$zz = '/\d+/';

$string = "迪奧和奧迪250都是我最?lèi)?ài)";

//待會(huì)兒再試試中間沒(méi)有0-9的情況
//$string = "迪奧和奧迪都是我最?lèi)?ài)";


if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

と少なくとも 1 回一致し、d+ の + を証明します。 d は數(shù)字と一致し、+ は前の文字と少なくとも 1 回一致します。

* 前の文字と 0 回または任意の回?cái)?shù)一致します。

<?php
$zz = '/\w*/';

$string = "!@!@!!@#@!$@#!";

//待會(huì)兒再試試中間沒(méi)有0-9的情況
//$string1 = "!@#!@#!abcABC#@#!";


if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

は、コメントアウトされた $string1 と $string が正常に一致したことを示します。なぜなら、w は 0-9A-Za-z_ に一致し、* は前の w が存在しないことを意味するからです。存在する場(chǎng)合は 1 つ以上存在する可能性があります。

? 前の文字は 0 回または 1 回出現(xiàn)します。オプションの

<?php

$zz = '/ABC\d?ABC/';

$string = "ABC1ABC";

//待會(huì)兒再試試中間沒(méi)有0-9的情況
//$string1 = "ABC888888ABC";
//$string2 = "ABCABC";


if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

は $string、$string2 と正常に一致しますが、$string1 と一致しません。
マッチングの前後に ABC があり、真ん中に 0 ~ 9 があるため、0 ~ 9 はオプションですが、複數(shù)存在することはできません。

. (ドット) は n を除くすべての文字に一致します

<?php

$zz = '/gg.+gg/';

$string = "ABC1ABC";


if(preg_match($zz, $string, $matches)){
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
}else{
   echo '沒(méi)有匹配到';
}

?>

は $string、$string2 に一致しますが、$string1 には一致しません。
マッチングの前後に ABC があり、真ん中に 0 ~ 9 があるため、0 ~ 9 はオプションですが、複數(shù)存在することはできません。

| (縦棒)、または、最も低い優(yōu)先順位

優(yōu)先順位と or のマッチングを?qū)g験で見(jiàn)てみましょう

<?php

$zz = '/abc|bcd/';

$string1 = "abccd";
$string2 = "ggggbcd";

if (preg_match($zz, $string1, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒(méi)有匹配到';
}

?>

見(jiàn)てみましょう:

1. 最初、私のマッチングのアイデアは次のとおりでした。 match abccd または abbcd です。ただし、$string1 と $string2 を照合すると、照合結(jié)果は abc と bcd になります。

2. 実裝または照合し、照合結(jié)果は abc または bcd になります。連続する文字列よりも高い優(yōu)先順位はありません。

それでは、上記の例で abccd または abbcd に一致させたい場(chǎng)合はどうすればよいでしょうか?

優(yōu)先度を変更するには()を使用する必要があります。

<?php

$zz = '/ab(c|b)cd/';

$string1 = "起來(lái)abccd閱兵";
$string2 = "ggggbcd";
$string3 = '中國(guó)abbcd未來(lái)';

if (preg_match($zz, $string1, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒(méi)有匹配到';
}

?>

結(jié)果は次のとおりです:

QQ截圖20161114135925.png

結(jié)論:

1. abccd または abbcd ($string1 または $string3) は実際に一致します。

2. ただし、一致する配列にはもう 1 つの要素があり、この要素の添え字は 1 です

3. () 內(nèi)の內(nèi)容が正常に一致する限り、一致したデータは配列要素に配置されます。下付き文字 1 中間。

^ (サーカムフレックス)、^ の後の文字列で始まらなければなりません

<?php

$zz = '/^豬哥好帥\w+/';

$string1 = "豬哥好帥abccdaaaasds";
//$string2沒(méi)有以豬哥好帥開(kāi)始
$string2 = "帥abccdaaaasds";


if (preg_match($zz, $string1, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒(méi)有匹配到';
}

?>

実験を通じて次の結(jié)論が見(jiàn)つかりました:

1.$string1 は正常に一致しましたが、$string2 は正常に一致しませんでした

2. $string1 は指定された文字で始まります

3. そして、$string2 は ^ の後の文字で始まりません

4. この規(guī)則の翻訳の意味は次のとおりです: Brother Zhu is so nice で始まり、次に a-zA- が続きますZ0-9_少なくとも 1 文字。

$ (ドル記號(hào)) は $ の前の文字で終わる必要があります

<?php

$zz = '/\d+努力$/';

$string1 = "12321124333努力";
//$string2
$string2 = "12311124112313力";


if (preg_match($zz, $string1, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒(méi)有匹配到';
}

?>

実行して結(jié)果を確認(rèn)すると、次の結(jié)論に達(dá)します:

1. $string1 は正常に一致しましたが、$string2 は一致しませんでした

2. $ の前の文字は d+ で、その後に中國(guó)語(yǔ)の努力が続きます。

3. したがって、試合はこれ全體です。 d は 0 ~ 9 の整數(shù)を指し、+ 記號(hào)は少なくとも 1 つの 0 ~ 9 を表します

b および B の単語(yǔ)境界と非単語(yǔ)境界

境界とは何かを説明しましょう:

1. 正規(guī)表現(xiàn)の意味境界があるということは、この境界は區(qū)切り文字の始まりと終わりが規(guī)則的な境界です。

2. これは英語(yǔ)の単語(yǔ)で、その後にスペースが続きます。これは、単語(yǔ)が終わり、単語(yǔ)の境界に達(dá)したことを意味します

b単語(yǔ)の境界は、それが先頭または最後になければならないことを意味します。
B は非境界です。つまり、正規(guī)表現(xiàn)の先頭または最後に置くことはできません。

<?php

$zz = '/\w+\b/';

$string1 = "this is a apple";
$string2 = "thisis a apple";
$string3 = "thisisaapple";

if (preg_match($zz, $string1, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒(méi)有匹配到';
}

?>

結(jié)論:

1.$string1、$string2、および $string3 はすべて正常に一致しました。

2. $string1 が一致すると、このスペースが境界になります

3. $string2 が一致すると、これが境界になります

4. $string3 が一致すると、thisisaapple は正規(guī)表現(xiàn)全體の終わりに達(dá)するため、これも境界になります境界線(xiàn)。したがって、試合は成功です。

単語(yǔ)以外の境界を試してみましょう:

<?php

$zz = '/\Bthis/';

$string1 = "hellothis9";

//$string2 = "hello this9";
//$string2 = "this9中國(guó)萬(wàn)歲";

if (preg_match($zz, $string1, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒(méi)有匹配到';
}

?>

概要:

1. $string1 のマッチングは成功しますが、$string2 のマッチングは失敗します。

2. B の後に this が続くため、これは単語(yǔ)の境界 (スペースと先頭と末尾) に現(xiàn)れません。

{m} は m 回のみ出現(xiàn)でき、m 回のみ出現(xiàn)できます

<?php

$zz = '/喝\d{3}酒/';

$string1 = "喝988酒";

//$string2 = "喝98811酒";

if (preg_match($zz, $string1, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒(méi)有匹配到';
}

?>

結(jié)論:
上記の例では、d{3} は、0 ~ 9 は 1 回以上またはそれ以下ではなく、3 回のみ出現(xiàn)できると規(guī)定しました。

{n,m} は n 回から m 回まで出現(xiàn)できます

<?php

$zz = '/喝\d{1,3}酒/';

$string1 = "喝9酒";

//$string2 = "喝988酒";

if (preg_match($zz, $string1, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒(méi)有匹配到';
}

?>

結(jié)論:
上記の例 d{1,3} では、0 ~ 9 は 1 回、2 回、または 3 回しか出現(xiàn)できないと規(guī)定しました。それ以外の時(shí)間はすべて間違っています

{m,} 少なくとも m 回、最大數(shù)は制限されていません

<?php

$zz = '/喝\d{2,}/';

$string1 = "喝9";

//$string2 = "喝98";
//$string3 = "喝98122121";


if (preg_match($zz, $string1, $matches)) {
   echo '匹配到了,結(jié)果為:';
   var_dump($matches);
} else {
   echo '沒(méi)有匹配到';
}

?>

結(jié)論:
上記の例 d{2,} では、ドリンクの後ろに 0 ~ 9 が表示されると規(guī)定しています2回以上、最大でも回?cái)?shù)に制限はありません。したがって、$string1 は一致に失敗し、$string2 は正常に一致します。 $string3 は正常に一致しました。

學(xué)び続ける
||
<?php $zz = '/喝\d{2,}/'; $string1 = "喝9"; //$string2 = "喝98"; //$string3 = "喝98122121"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,結(jié)果為:'; var_dump($matches); } else { echo '沒(méi)有匹配到'; } ?>
提出するリセットコード