質問

    

この質問にはすでに回答があります:

         

POSIXをPHPのPCREに変換するユーティリティはありますか? PCREのPHPマニュアルに多少混乱しているため、PCREの詳細情報を見つけようとしていますが、そのようなユーティリティを設計した人がいるかどうか疑問に思いました。

または、もし誰かが以下を変換する方法を説明するなら、それもまた大丈夫でしょう:

ereg("^#[01-9A-F]{6}<*>quot;, $sColor)

しかし、変換を教えてくれるだけでなく、それがどのように行われたか説明してください。

役に立ちましたか?

解決

preg_match("/^#[01-9A-F]{6}$/", $sColor)
この場合、2つの区切り文字を追加するだけです。

perlでは、次のように記述できます

if ( s =~ /x.+y/ )
{ print "match"; }
ご覧のとおり、実際の正規表現は//でカプセル化されています。正規表現にオプションを設定する場合は、2番目の/の後に置きます。デフォルトで式を欲張らないように切り替える/x.+y/U
pcreはこの動作をエミュレートします。関数を呼び出す必要がありますが、区切り文字を指定し、2番目の区切り文字の後にオプションを設定する必要もあります。 perlでは、区切り文字は/である必要があります。pcreを使用すると、pcreと同じように自由に選択できます
preg_match("/^#[01-9A-F]{6}$/", $sColor)
preg_match("!^#[01-9A-F]{6}$!", $sColor)
preg_match("#^\#[01-9A-F]{6}$#", $sColor) // need to escape the # within the expression here
preg_match("^#[01-9A-F]{6}$", $sColor)
表現内に表示されない文字を選択するのが最善です。

他のヒント

preg_match(&quot; / ^#[01-9A-F] {6} $ / D&quot ;, $ sColor)

D 修飾子。人々はいつもそれを忘れています。それなしでは、 $ は最終的な改行文字を許可します。 &quot;#000000 \ n&quot;のような文字列合格します。これはPOSIXとPCREの微妙な違いです。

そしてもちろん、 [01-9] [0-9] に書き換えることができます。

ところで、PHPはPCREとPOSIXの両方の正規表現をサポートしています。以下は、POSIX正規表現に関するPHPマニュアルのセクションです。したがって、これらを変換する必要はありません。 http://www.php.net/manual/en/book.regex.php

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top