<?php
$text = <<< TEXT
xxx
#ABC {
123
456
789
}
yyyy
TEXT;echo preg_replace("/.*(#.+\{.+\}).*/s","\\1",$text);
?>

解决方案 »

  1.   

    大哥不行啊str ="#123 {\n aaaaa \n}\n#456 {\n bbbbb \n}\n#123 {\n cccc \n}\n";echo preg_replace("/.*(#.+\{.+\}).*/s","\\1",$str);试了一下
    怎么只显示 #123 { cccc }而且为什么用preg_replace?
    不用preg_match?
    帮忙解释一下啊。
      

  2.   

    看你自己要怎么处理了。
    反正匹配得到结果就是了$re = "/#.+\{/.+\}/sU";
    $str ="#123 {\n aaaaa \n}\n#456 {\n bbbbb \n}\n#123 {\n cccc \n}\n";preg_match_all( $re , $str, $out );
    print_r( $out );
      

  3.   

    不好意思,正则写错了.
    以下结果测试通过$re = "/#.+\{.+\}/sU";
    $str="#123 {\n aaaaa \n}\n#456 {\n bbbbb \n}\n#123 {\n cccc \n}\n";preg_match_all( $re , $str, $out );
    print_r( $out );