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 + "\"");
}
}
}这样应该可以
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 + "\"");
}
}
}这样应该可以
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{
//
}
}
}
我的表达式中也可能没有括号,当表达式为以下形式的时候:
Pattern ptnLeaf = Pattern.compile("name\\s+(.+?)(\\(*.+\\)*)?",
Pattern.CASE_INSENSITIVE | Pattern.DOTALL);String myStr = "Name 中国";
此时,当我取"中国"的时候,只能取到一个"中",请问应该如何修改????
matchName.group(4) => 中国
matchName.group(6) => (
matchName.group(8) => china_asia
matchName.group(10) => )