为什么用正则???
<?
$str=<<<EOT
111[               
      222[  ]      
      
      333[  
       
      ]                 
              444[
       
       ]a[
       
       ]             
             555[
      
      666[  ]
      777[
          ]
        888[]
        
      ]            
    ]
EOT;
echo substr($str,strpos($str,"[")+1,strrpos($str,"]")-strpos($str,"[")-1);
?>

解决方案 »

  1.   

    因为又多个111[               
          222[  ]      
          
          333[  
           
          ]                 
                  444[
           
           ]a[
           
           ]             
                 555[
          
          666[  ]
          777[
              ]
            888[]
            
          ]            
        ]
    ccc[               
          222[  ]      
          
          333[  
           
          ]                 
                  444[
           
           ]a[
           
           ]             
                 555[
          
          666[  ]
          777[
              ]
            888[]
            
          ]            
        ]
      

  2.   

    没测试,没用正则
    substr(str,strpos(str,"["),strpos(str,"]"))
      

  3.   

    测试了substr(str,strpos(str,"["),strpos(str,"]"))如果又很多个 就不管用啦!
      

  4.   

    just try, not tested before
    <textarea id="test">
    111[               
          222[  ]      
          
          333[  
           
          ]                 
                  444[
           
           ]a[
           
           ]             
                 555[
          
          666[  ]
          777[
              ]
            888[]
            
          ]            
        ]
    111[               
          222[  ]      
          
          333[  
           
          ]                 
                  444[
           
           ]a[
           
           ]             
                 555[
          
          666[  ]
          777[
              ]
            888[]
            
          ]            
        ]
    </textarea>
    <script>
    function g(s){
    var arr=[],i=0;
    var re = /111\[([\s\S]*?)\]/
    while (re.test(s)) {
    arr[i++] = RegExp.$1;
    s = s.replace(re, "");
    }
    return arr;
    }
    document.write(g(test.value).join("<br/>");
    </script>
    </script>
      

  5.   

    如果你无限嵌套的话是不可能写正则表达式来的,你要知道最多嵌套几层iMax,然后
    var strReg='';
    for(var i=0;i<iMax;i++)
    {
    strReg='(\S{1,3}\[('+strReg+')\])*';
    }strReg='/^('+strReg+')+$/';
      

  6.   

    <script language="JavaScript">
    <!--
    function g(s) {
    var arr=[], i=0;
    var re = /111\[([\s\S]*)\]/;
    while (re.test(s)) {
    arr[i++] = RegExp.$1;
    s = s.replace(re, "");
    }
    return arr;
    }
    document.write(g(test.value));
    //-->
    </script>
    把fason的re改成无?号,测试通过。
      

  7.   

    to  redsleaf:
    因为按你的要求,写出来应该是这样:/^(\S{1,3}\[((\S{1,3}\[\])*)*\])+$/但这样根本就不是一个正则表单式!!!!
      

  8.   

    to yellowhwb(KaDoO)想了很久,可能单正则解决不了!