ホームページ  >  記事  >  バックエンド開発  >  PHP 正規修飾子の使用例の分析

PHP 正規修飾子の使用例の分析

墨辰丷
墨辰丷オリジナル
2018-05-29 09:42:081177ブラウズ

この記事では主にphpの通常修飾子の使い方を紹介しており、phpの通常修飾子の機能や使用方法、注意点などをサンプル形式で詳しく解説していますので、困っている方は参考にしてください

この記事の例では、 php の通常の修飾子の使用。参考のために皆さんと共有します。詳細は次のとおりです:

<?php
   //标记在整个模式之外;
   // 例://$mode="/\bis\b/U",其中U在外面;
  //修正符:i 不区分大小写的匹配;
     //如:"/abc/i"可以与abc或aBC或ABc等匹配;
  //修正符:m 将字符串视为多行,不管是那行都能匹配;
  //  例://模式为:$mode="/abc/m";
     //要匹配的字符串为:$str="bcefg5e\nabcdfe"
     //注意其中\n,换行了;abc换到了下一行;
     //$str和$mode仍可以匹配,修正符m使得多行也可匹配;
  //修正符:s 将字符串视为单行,换行符作为普通字符;
   // 例://模式为:$mode="/pr.y/";
      //要匹配字符串为:$str="pr\ny";
      //两者不可匹配; . 是除了换行以外的字符可匹配;
      //修改下模式为:$mode="/pr.y/s";
        //其中修正符s将\n视为普通字符,即不是换行;
      //最后两者可以匹配;
  //修正符:x 将模式中的空白忽略;
  //修正符:A 强制从目标字符串开头匹配;
   // 例://$mode="/abc/A";
      //可以与$str="abcsdfi"匹配,
      //不可以与$str2="sdsdabc"匹配;
      //因为$str2不是以abc开头;
  //修正符:D 如果使用$限制结尾字符,则不允许结尾有换行;
  //  例://模式为:$mode="/abc$/";
      //可以与最后有换行的$str="adshabc\n"匹配;
      //元子符$会忽略最后的换行\n;
      //如果模式为:$mode="/abc/D",
      //则不能与$str="adshabc\n"匹配,
      //修正符D限制其不可有换行;必需以abc结尾;
  //修正符:U 只匹配最近的一个字符串;不重复匹配;
  //  例:
  //   如模式为:
      $mode="/a.*c/";
      $str="abcabbbcabbbbbc" ;
      preg_match($mode,$str,$content);
      echo $content[0]; //输出:abcabbbcabbbbbc;
      //如果$mode="/a.*c/";变成$mode="/a.*c/U";
      // 则只匹配最近一个字符串,输出:abc;
//修正符:e 配合函数preg_replace()使用,
//      可以把匹配来的字符串当作正则表达式执行;
?>

修飾子:

POSIX互換性のある正規表現には修飾子がありません。

正規表現で使用できる Perl 互換の修飾子 (修飾子のスペースと改行は無視され、他の文字はエラーの原因となります):

i (PCRE_CASELESS):
照合時に大文字と小文字を無視します。

m (PCRE_MULTILINE):
この修飾子が設定されている場合、行の先頭 (^) と行の末尾 ($) は文字列全体の先頭と末尾に一致するだけでなく、改行文字 ( n) それぞれ後と前にあります。

s (PCRE_DOTALL):
この修飾子が設定されている場合、パターン内のドット メタ文字 (.) は改行を含むすべての文字と一致します。この設定を行わないと、改行文字は含まれません。

x (PCRE_EXTENDED):
この修飾子が設定されている場合、パターン内の空白文字は、エスケープされた文字または文字クラス内の文字を除き、完全に無視されます。

: この修飾子が設定されている場合、preg_replace() は置換文字列内の後方参照の通常の置換を実行し、それを PHP コードとして評価し、その結果を使用して検索文字列を置換します。 preg_replace() のみがこの修飾子を使用し、他の PCRE 関数はそれを無視します。

A (PCRE_ANCHORED): この修飾子が設定されている場合、パターンは強制的に「アンカー」されます。つまり、パターンはターゲット文字列の先頭からのみ一致するように強制されます。

D (PCRE_DOLLAR_ENDONLY): この修飾子が設定されている場合、パターン内の行末 ($) はターゲット文字列の末尾にのみ一致します。このオプションを指定しないと、最後の文字が改行文字の場合も一致します。 m 修飾子が設定されている場合、このオプションは無視されます。

S : パターンが複数回使用される場合、マッチングを高速化するために最初に分析する価値があります。 この修飾子が設定されている場合、追加の分析が実行されます。現在、パターンの分析は、単一の固定開始文字を持たない非アンカー パターンにのみ役立ちます。

U (PCRE_UNGREEDY): 「?」のデフォルトの一致を貪欲にします。

X (PCRE_EXTRA): パターン内のバックスラッシュの後に特別な意味のない文字が続くとエラーが発生するため、この組み合わせは将来の拡張のために保存されます。デフォルトでは、バックスラッシュの後に特別な意味を持たない文字が続くと、その文字そのものとして扱われます。

u (PCRE_UTF8): パターン文字列は UTF-8 として扱われます。

注:

パターン修飾子

i - 大文字と小文字の両方に一致します
M - 文字列を複数行として扱います
S - 文字列を変更しますある単一行であり、改行文字は通常の文字として扱われるため、「.」は任意の文字と一致します
文字列は式として使用されます 以上がこの記事の全内容です、皆さんの学習に役立つことを願っています。

関連おすすめ:

php

定期修正

使い方詳細

php定期修正使用例詳細説明

php定期修正記号 /i、/is、/ s、/isU etc

以上がPHP 正規修飾子の使用例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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