16

'!\d!'PHPpreg_match関数内の正規表現を見てきました。一体何ですか?

4

2 に答える 2

17

PHP PCRE ドキュメントから:

PCRE 関数を使用する場合、パターンを区切り文字で囲む必要があります。区切り文字には、英数字、バックスラッシュ、空白文字以外の任意の文字を使用できます。

この場合、単に!区切り文字として使用しています。通常の区切り文字を正規表現自体の中でエスケープせずに使用したい場合によく使用されます。この場合、正規表現の残りの部分は単に であるため、実際には必要ありませんが\d、パスに 3 つ以上のディレクトリ レベルが含まれていることを確認する場合などに便利です。次のいずれかを使用できます。

/\/.*\/.*\/.*\/ blah blah blah /

また:

!/.*/.*/.*/ blah blah blah !

現在、それらは完全にテストされておらず、宣伝どおりに完全に機能しない可能性がありますが、必要な最小限のエスケープに関する一般的な考え方を理解する必要があります.

http://別の例 (上記のリンク先のページから) は、文字列がマーカーで始まるかどうかを確認しています。次の 2 つのいずれか:

/^http:\/\//
!^http://!

で十分ですが、2 番目の方が理解しやすいです。

于 2012-09-25T09:08:38.740 に答える
5

!区切り文字として使用され\d、1 桁に一致します。

と同じです/[0-9]/

于 2012-09-25T09:09:17.167 に答える