php正規表現処理オプション
4864 ワード
PHP正規表現モード補正子
PHP正規表現/i,/is,/s,/isUなどはどんなものですか?
1、正規表現の演算順序()カッコはメモリ処理なので最高*?+{}繰り返しマッチング内容次に^$b境界処理第3|条件処理第4最後に演算順序でマッチングを計算する
2、正規表現モード補正子i正規内容マッチング時に大文字と小文字を区別しない(デフォルトでは区別されている)mは、最初のコンテンツまたは最後のコンテンツをマッチングする際に複数行の識別マッチングSを用いてエスケープリターンを単行マッチングとしてキャンセルする.マッチングする際にxが正規の空白Aを無視してD強制的に最初からマッチングを開始する.マッチングの末尾に何のコンテンツもないU貪欲なマッチングを禁止する最近のマッチング文字だけを追跡して終了し、採集プログラムでよく使われる正規表達式
i大文字と小文字の一致
sモードの円点メタ文字(.)は、改行を含むすべての文字に一致します.
xモードの空白文字は、エスケープされた文字または文字クラス内の文字以外は完全に無視され、エスケープされていない文字クラス以外の#および次の改行文字の間のすべての文字は、両端を含めて無視されます.
A(PCRE_ANCHORED)この補正子が設定されている場合、モードは「anchored」に強制されます.すなわち、強制はターゲット文字列の先頭からのみ一致させ、自動的にモード先頭に^を加算します.
D(PCRE_DOLLAR_ENDONLY)この修正子が設定されている場合、モードのドル文字はターゲット文字列の末尾にのみ一致します.このオプションがない場合、最後の文字が改行文字であれば、ドル記号もこの文字に一致する前に(ただし、他の改行文字と一致しない前に).m補正子を設定した場合、このオプションは無視されます.Perlには同等の補正子はありません.S 1つのモードが何回か使用される場合、一致を加速させるために先に分析する価値があります.この補正子を設定した場合、追加の分析が行われます.現在、1つのモードを分析するのは、1つの固定子がない場合のみです開始文字のnon-anchoredモードが役立ちます.
U(PCRE_UNGREEDY)この補正子は、一致する数の値をデフォルトの繰り返しではなく、後に続く「?」繰り返されるようになった.これはPerlと互換性がありません.このオプションは、モードで(?U)修正子を設定することで有効にすることもできます.
X(PCRE_EXTRA)この修正子は、PCREのPerlと互換性のない追加機能を有効にします.モード内の任意の反斜線の後ろに特別な意味のないアルファベットが続くとエラーが発生し、将来の拡張に備えてこの組み合わせを保持します.デフォルトでは、Perlと同様に、反斜線の後ろに特別な意味のないアルファベットがアルファベットそのものとされています.この修正子によって制御される他のプロパティはありません.すなわち、貪欲モード、最大限マッチング:/a[w]+?e/Uはabceadeddddのabceadeであってabceではなくabceadeと一致し、U補正を加えない場合、この補正子はPCRE_UTF 8のPerlと互換性のないPCREの追加機能を有効にする.パターン文字列はUTF-8として扱われる.本補正子はUnixにおいてPHP 4.1からなる.0から利用可能、win 32でPHP 4.2から3から利用可能です.
事実は、Uを加えると、もともと貪欲なマッチングが非貪欲なマッチングになり、非貪欲なマッチングが貪欲なマッチングになったことを証明している.
PHP正規表現/i,/is,/s,/isUなどはどんなものですか?
1、正規表現の演算順序()カッコはメモリ処理なので最高*?+{}繰り返しマッチング内容次に^$b境界処理第3|条件処理第4最後に演算順序でマッチングを計算する
2、正規表現モード補正子i正規内容マッチング時に大文字と小文字を区別しない(デフォルトでは区別されている)mは、最初のコンテンツまたは最後のコンテンツをマッチングする際に複数行の識別マッチングSを用いてエスケープリターンを単行マッチングとしてキャンセルする.マッチングする際にxが正規の空白Aを無視してD強制的に最初からマッチングを開始する.マッチングの末尾に何のコンテンツもないU貪欲なマッチングを禁止する最近のマッチング文字だけを追跡して終了し、採集プログラムでよく使われる正規表達式
i大文字と小文字の一致
sモードの円点メタ文字(.)は、改行を含むすべての文字に一致します.
xモードの空白文字は、エスケープされた文字または文字クラス内の文字以外は完全に無視され、エスケープされていない文字クラス以外の#および次の改行文字の間のすべての文字は、両端を含めて無視されます.
A(PCRE_ANCHORED)この補正子が設定されている場合、モードは「anchored」に強制されます.すなわち、強制はターゲット文字列の先頭からのみ一致させ、自動的にモード先頭に^を加算します.
D(PCRE_DOLLAR_ENDONLY)この修正子が設定されている場合、モードのドル文字はターゲット文字列の末尾にのみ一致します.このオプションがない場合、最後の文字が改行文字であれば、ドル記号もこの文字に一致する前に(ただし、他の改行文字と一致しない前に).m補正子を設定した場合、このオプションは無視されます.Perlには同等の補正子はありません.S 1つのモードが何回か使用される場合、一致を加速させるために先に分析する価値があります.この補正子を設定した場合、追加の分析が行われます.現在、1つのモードを分析するのは、1つの固定子がない場合のみです開始文字のnon-anchoredモードが役立ちます.
U(PCRE_UNGREEDY)この補正子は、一致する数の値をデフォルトの繰り返しではなく、後に続く「?」繰り返されるようになった.これはPerlと互換性がありません.このオプションは、モードで(?U)修正子を設定することで有効にすることもできます.
X(PCRE_EXTRA)この修正子は、PCREのPerlと互換性のない追加機能を有効にします.モード内の任意の反斜線の後ろに特別な意味のないアルファベットが続くとエラーが発生し、将来の拡張に備えてこの組み合わせを保持します.デフォルトでは、Perlと同様に、反斜線の後ろに特別な意味のないアルファベットがアルファベットそのものとされています.この修正子によって制御される他のプロパティはありません.すなわち、貪欲モード、最大限マッチング:/a[w]+?e/Uはabceadeddddのabceadeであってabceではなくabceadeと一致し、U補正を加えない場合、この補正子はPCRE_UTF 8のPerlと互換性のないPCREの追加機能を有効にする.パターン文字列はUTF-8として扱われる.本補正子はUnixにおいてPHP 4.1からなる.0から利用可能、win 32でPHP 4.2から3から利用可能です.
<?php
echo '<pre>';
$str = '<ul>hello world<li>hi</li><li>hello</li></ul>';
$pattern = '~<li>.*</li>~';
preg_match($pattern,$str,$matches);
var_dump($matches);
/*
array(1) {
[0]=>
string(25) "<li>hi</li><li>hello</li>"
}
*/
$pattern1 = '~<li>.*?</li>~';
preg_match($pattern1,$str,$matches1);
var_dump($matches1);
/*
array(1) {
[0]=>
string(11) "<li>hi</li>"
}
*/
$pattern2 = '~<li>.*</li>~U';
preg_match($pattern2,$str,$matches2);
var_dump($matches2);
/*
array(1) {
[0]=>
string(11) "<li>hi</li>"
}
*/
$pattern3 = '~<li>.*?</li>~U';
preg_match($pattern3,$str,$matches3);
var_dump($matches3);
/*
array(1) {
[0]=>
string(25) "<li>hi</li><li>hello</li>"
}
*/
事実は、Uを加えると、もともと貪欲なマッチングが非貪欲なマッチングになり、非貪欲なマッチングが貪欲なマッチングになったことを証明している.