import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Regex2 {
    public static void main(String[] args) {
        String myStr = "Name 中国(china_asia)";
        String name;        Pattern ptnLeaf = Pattern.compile("name\\s+(.+?)(\\(.+\\))?",
                Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
        Matcher mchLeaf = ptnLeaf.matcher(myStr);        if (mchLeaf.matches()) {
            name = mchLeaf.group(1);
            System.out.println("\"" + name + "\"");
        }
    }
}这样应该可以

解决方案 »

  1.   

    是不是你想要的效果?public class Test{
      public static void main(String[] args){
        String myStr="Name 中国(sdfasdfas)";
        int beg = myStr.indexOf("Name ");
        int end = myStr.indexOf("(");
        if(end!=-1 && beg!=-1){
          System.out.println(myStr.subSequence(beg+"Name ".length(),end));  
        }else if(beg!=-1){
          System.out.println(myStr.subSequence(beg+"Name ".length(),myStr.length()));  
        }else{
          //
        }    
      }
    }
      

  2.   

    To:registered(已注册): 
    我的表达式中也可能没有括号,当表达式为以下形式的时候:
    Pattern ptnLeaf = Pattern.compile("name\\s+(.+?)(\\(*.+\\)*)?",
                    Pattern.CASE_INSENSITIVE | Pattern.DOTALL);String myStr = "Name 中国";
    此时,当我取"中国"的时候,只能取到一个"中",请问应该如何修改????
      

  3.   

    "Name 中国(china_asia)"(\\s*)(Name)(\\s*)(.+?)(\\s*)([\\(]*)(\\s*)(\\w*)(\\s*)([\\)]*)(\\s*)
    matchName.group(4)  => 中国
    matchName.group(6)  => (
    matchName.group(8)  => china_asia
    matchName.group(10)  => )