String regex="^([a-zA-Z]+)/\(1-([a-zA-Z]+)\)"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher("LDldDiskSpaceUsed/(1-LDldFreeSpacePercent)"); if(m.find()){ String s1 = m.group(1);//LDldDiskSpaceUsed String s2 = m.group(2);//LDldFreeSpacePercent }
public class Opert { public static void main(String[] args) { String str = "xdasd-dsa-(dsa";//获取表达式 String str1 = "[^A-Za-z]+";//匹配非字母字符 String str2 = str.replaceAll(str1, " ");//把非字母字符替换为空格 String[] str3 = str2.split(" ");//用空格切割字符串,得到单词数组 for (int i = 0; i < str3.length; i++) { System.out.println(str3[i]); } } }刚写的 应该就是你想要的,注释也写的很全。
是了~~多谢楼上啊~~不过为啥我用正则匹配总是不行呢·String regex = "([a-zA-Z]+)"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(inter_enfield); int s = m.groupCount(); for(int i=0;i<s;i++){ System.out.println(m.group(i)); }
String regex="^([a-zA-Z]+)/\(1-([a-zA-Z]+)\)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher("LDldDiskSpaceUsed/(1-LDldFreeSpacePercent)");
if(m.find()){
String s1 = m.group(1);//LDldDiskSpaceUsed
String s2 = m.group(2);//LDldFreeSpacePercent
}
public class Opert { public static void main(String[] args) {
String str = "xdasd-dsa-(dsa";//获取表达式
String str1 = "[^A-Za-z]+";//匹配非字母字符
String str2 = str.replaceAll(str1, " ");//把非字母字符替换为空格
String[] str3 = str2.split(" ");//用空格切割字符串,得到单词数组
for (int i = 0; i < str3.length; i++) {
System.out.println(str3[i]);
}
}
}刚写的 应该就是你想要的,注释也写的很全。
int s = m.groupCount(); for(int i=0;i<s;i++){
System.out.println(m.group(i));
}
String str = "xdasd-dsa-(dsa";// 获取表达式
String str1 = "[^A-Za-z]+";// 匹配非字母字符
String[] str2 = str.split(str1);// 切割字符串,得到单词数组改的简单点,去掉中间的步骤。
import java.util.regex.*;
public class MyRegex2 {
public static void main(String[] args) {
String s="LDldDiskSpaceUsed/(1-LDldFreeSpacePercent)";
Matcher m=Pattern.compile("\\w+(?=\\/)|\\w+(?=\\))").matcher(s);
String s1 = null,s2=null;
if(m.find())
s1=m.group();
if(m.find())
s2=m.group();
System.out.println(s1);
System.out.println(s2);
}
}
你写的关键是这一句有问题,建议你去看下API中matcher()方法。