正規表現文字列を否定するにはどうすればよいですか? 次のような URL ルールがあります: mm.[*|a|b|add].cn ここで、 a 、 b 、 add は例外を表します たとえば mm.a.cn は一致しません mm.x.cn は と一致します 正規表現はどうやって書けばいいのでしょうか? ? ? mm.[a|b|add].cn がすべての例外に一致することだけはわかっていますが、否定された結果が必要なだけですか? 正規表現 レギュラー URL 共有先: -----解決策---------$s1= 'mm.a.cn'; $s2= 'mm.add.cn'; $s3= 'mm.c.cn'; $p='/mm\.(.+)(?------解决方案--------------------b------解决方案--------------------add)\.cn/'; $bool1=preg_match($p,$s1); $bool2=preg_match($p,$s2); $bool3=preg_match($p,$s3); var_dump($bool1,$bool2,$bool3);ログイン後にコピーログイン後にコピー int(0) int(0) int(1) -----解法---------preg_match('#www\.(a------解决方案--------------------b------解决方案--------------------add)\.cn#',$str)ログイン後にコピー 合わない場合 !preg_match('#www\.(a------解决方案--------------------b------解决方案--------------------add)\.cn#',$str)ログイン後にコピー-----解決策--------------------------------LZ にだけ言えます——この正規表現は書くのが難しいです 引用:$s1= 'mm.a.cn'; $s2= 'mm.add.cn'; $s3= 'mm.c.cn'; $p='/mm\.(.+)(?------解决方案--------------------b------解决方案--------------------add)\.cn/'; $bool1=preg_match($p,$s1); $bool2=preg_match($p,$s2); $bool3=preg_match($p,$s3); var_dump($bool1,$bool2,$bool3);ログイン後にコピーログイン後にコピー int(0) int(0) int(1) mm.aadd.cn を試してみますか? ------解決策---------$s =<<< TXT mm.a.cn mm.x.cn mm.aadd.cn mm.c.cn TXT; preg_match_all('/mm\.(?!a------解决方案--------------------b------解决方案--------------------add).*?\.cn/s', $s, $r); print_r($r); preg_match_all('/mm\.(?!a\.------解决方案--------------------b\.------解决方案--------------------add\.).*?\.cn/s', $s, $r); print_r($r);ログイン後にコピー配列 ( [0] => 配列 ( [0] => mm.x.cn [1] =&gt; ) ) 配列 ( [0] => 配列 ( [0] => mm.x.cn [1] => mm.aadd.cn [2] = & gt; mm.c.cn ) )-----解決策---------preg_match_all('/mm. ( ?!a.-----解決策---------b. ------解決策----------------------add.).*?.cn/s', $ s, $ r); 書ける preg_match_all('/mm.(?!(?:a-----解決策--------- b-----解決策---------add).).* ?. cn/s', $s, $r);------解決策-------- -引用:preg_match_all('/mm.(?!a. -----解決策---- ---- ------------b.------解決策------------ ----- ---add.).*?.cn/s', $s, $r); 書ける preg_match_all('/mm.(?!(?:a-----解決策--------- b-----解決策---------add).).* ?. cn/s', $s, $r);