正規表現の書き方と解き方

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 13:48:23934ブラウズ

正規表現の書き方
$str='[movie=http://a.com/a.X]'; //X 形式は .mp3 と .wmv を除く任意の文字列です
$ptn= "/[ movie=.*.[^(mp3|wmv)]]/i";
$str=preg_replace($ptn,'x',$str);
echo $str;
どうしたのですか?

-----解決策---------
あなたは通常のルールを理解していません角括弧 [] の意味は、[] 内のすべてが照合時に 1 文字だけを「消費」するということです。
xxx 以外の要件は、通常、「否定先読み」を使用して実装されます。
------解決策----------------------
$str='[movie=http:/ / a.com/a.mp3]';
$ptn="/[movie=.*.[^(mp3|wmv)]+]/i";

if(preg_match($ ptn) ,$str)) {
echo 'Y';
} else {
echo 'N';
}
------解決策---------

PHP コード
<?php
$str='[movie=http://a.com/a.mp3]'; //X 形式は .mp3 と .wmv を除く任意の文字列です
$ptn="/[movie=.*(?<!mp3|wmv)]$/";
$str=preg_replace($ptn,'x',$str);
エコー $str;
?>
<br /><font color='#e78608'>------解決策---------</font><br /><dl class='code'>PHP コード<pre class="brush:php;toolbar:false">
<?php
$str='[映画=http://a.com/a.mp3]';
//$str='[movie=http://a.com/a.mp]';
$ptn="/[movie=(?>.*.)(?:(?!mp3|wmv).+)]/";

if(preg_match($ptn,$str,$g)) {
 エコー「Y」;
 print_r($g);
} それ以外 {
 エコー「N」;
}
?><div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。