ホームページ  >  記事  >  バックエンド開発  >  PHPの正規表現におけるメタキャラクタの詳しい説明(コード例)

PHPの正規表現におけるメタキャラクタの詳しい説明(コード例)

易达
易达オリジナル
2020-05-30 16:54:00167ブラウズ

この記事の目標:

1. 正規表現のメタキャラクターの定義を理解する

2. 基本的な正規表現でのメタキャラクターの使い方をマスターする

(1) 正規表現のメタキャラクターの定義を理解する

特別な意味を持つ正規表現文字一般的なメタキャラクターは次のとおりです:

、^、$、[,]、|、(,)、?*、+、{、}

(2)、基本的な正規表現でのメタキャラクターの使い方をマスターしましょう

概要:

1. 通常、文字をエスケープするために使用されます
2. ^ はターゲットの開始位置 (または複数行モードでは行の先頭) を表します
3. $ はターゲットの終了位置を表します(または複数行モードの行の終わり)
4. デフォルトでは、改行文字
を除く任意の文字と一致します。
8、(サブグループ
9 の開始マークを表します) はサブグループ
10 の終了マークを表します、?: 量指定子として、0 または 1 の一致を示します。
11. *: 数量詞として、0 個以上の一致を意味します。
13. {: カスタム数量詞の開始タグを意味します。 }: カスタマイズを意味します。量指定子の終了マークです

以下のコードは、各要約を練習するために 1 つずつ使用されており、理解が促進されます

1. 一般的に文字をエスケープするために使用されます

具体的なコードは次のとおりです:

<?php
$p = "/A\/B\/C/";//包含A/B/C字符串
$str = "A/B/C";
if (preg_match($p, $str,$math)) {
    echo &#39;该字符串符合这个规则:/A\/B\/C/<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则:/A\/B\/C/&#39;;
}
?>

実行結果は次のとおりです:

文字列はこのルールに準拠しています: /A/B/C/

一致する結果は次のとおりです: Array ([0] => A/B/C)

2, ^ターゲットの開始位置を表します (または複数行モードでは、以下が行の先頭です)


具体的なコードは次のとおりです:

<?php
$p = "/^A/m";//以A开始
$str = "Abc \nAcc \nAdd";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则:<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>
実行結果は次のとおりです:

文字列はこれに準拠しますルール:

一致結果は次のとおりです: Array ( [0] => Array ( [0] => A [1] => A [2] => A ) )

3 $ は終わりを表します。ターゲットの位置 (複数行モードでは行末)


具体的なコードは次のとおりです:

<?php
$p = "/A$/m";//以A结尾的字符串
$str = "nihao A\n this is a word A";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则:<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>
実行結果は次のとおりです:

文字列はこのルールに準拠しています:

一致する結果は次のとおりです: Array ( [0] => Array ( [0] => A [1] => A ) )

4. デフォルト この場合、改行文字を除く任意の文字が一致します

は次のとおりです:
<?php
$p = "/A.B/";//查找A(任何字符除了换行符外)B的字符串
$str = "A,B A-B A\nB";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

実行結果は次のとおりです:

文字列はこのルールに準拠しています

一致する結果は次のとおりです: Array ( [0] => Array ( [0] => A,B [1] = > A-B ) )

5、[定義開始文字を表します


6、]は定義終了文字を表します

具体的なコードは次のとおりです:

<?php
$p = "/[0-9]A/";//包含小于9的一个数字和A
$str = "0A 1A 2A SA";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

実行結果は次のとおりです:

このルール

一致する結果は次のとおりです: Array ( [0] => Array ( [0] => 0A [1] => 1A [2] => 2A ) )

7, |ブランチ


具体的なコードは次のとおりです:

<?php
$p = "/[0-9]A|[0-9]B/";//查找小于9的一个数字和A相连的字符串或者查找
                        //小于9的一个数字和B相连的字符串
$str = "0A 1A 2B 3C";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>
実行結果は次のとおりです:

文字列はこのルールに準拠しています

一致する結果は次のとおりです: Array ( [0] => Array ( [0] => 0A [ 1] => 1A [2] => 2B ) )

8, ( はサブグループの開始マークを表します


9, ) はサブグループの終了マークを表します

<?php
$p = "/([0-9])-([0-9])/";
$str = "1-3 2-4 3-s";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>
実行結果は次のとおりです:

文字列はこのルールに準拠します

一致する結果は次のとおりです: Array ( [0] => Array ( [0] => 1-3 [1] => 2-4 ) [1] => Array ( [0 ] => 1 [1] => 2 ) [2] => 配列 ( [0] => 3 [1] => 4 ) )

10。 、0回または1試合を意味します。

具体的なコードは次のとおりです:

<?php
$p = "/(A[0-9])?H/";//查找H字符 因为?表示出现0或者1次
$str = "A1AH AsH BH";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

実行結果は次のとおりです:

文字列はこのルールに準拠しています

一致する結果は次のとおりです: Array ( [0] => Array ( [0] => H [1] => H [2] => H ) [1] => 配列 ( [0] => [2] => )

11. : 数量詞として、0 回または複数の一致を意味します
<?php
$p = "/(A[0-9])*H/";//查找H字符 因为*表示出现0或者多次所以和?的结果不同
$str = "A1AH A1H A2H A2A2H";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

実行結果は次のとおりです:

文字列はこのルールに準拠します

一致結果は次のとおりです: Array ( [0] => Array ( [0] =>) ; H [1] => A1H [2] => A2A2H ) [1] => 配列 ([0] => A1 [2] => ; A2 [3] => A2 ) )

12, +: 1 つ以上の一致を示す数量子として

具体的なコードは次のとおりです:

<?php
$p = "/(A[0-9])+H/";//查找H字符 前面至少包含A和一个<9的数字相连
$str = "A1AH A1H A2H A2A2H";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

実行結果は次のとおりです:文字列はこのルールに準拠します
一致結果は次のようになります: Array ( [0] => Array ( [0] => A1H [1] => A2H [2] => A2A2H ) [1] => Array ( [0] => A1 [1] => A2 [ 2] => A2 ) )

13, { : カスタム量指定子の開始タグを表します

14, } : カスタム量指定子の終了タグを表しますカスタム量指定子

具体的なコードは次のとおりです:

<?php
$p = "/d{2}/";//查找2个d的字符串
$str = "dd和dd和ddd";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

実行結果は次のとおりです:

この文字列はこのルールに準拠しています

一致する結果は次のとおりです: Array ( [0] => Array ( [0] = > dd [1] => dd [2] => dd ) )

1. 正規表現におけるメタキャラクターの定義を理解する

2.

以上がPHPの正規表現におけるメタキャラクタの詳しい説明(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Java Dao層の役割次の記事:Java Dao層の役割