我有这个字符串var1=val1&&var2=val2
。使用java的正则表达式支持我想像这样{val1, val2}
拆分字符串。即,结果数组应包含val1
和val2
。换句话说,我想删除以等号结尾的单词和特殊字符&&我想用正则表达式做所有这些。有人可以帮我这个吗?
答案 0 :(得分:3)
您可以使用split()
:
public static void main(String[] args) throws Exception {
String s = "var1=val1&&var2=val2";
String[] exp = s.split("&&");
String[] values = new String[] {exp[0].split("=")[1], exp[1].split("=")[1]};
System.out.println(Arrays.deepToString(values)); //prints [val1, val2]
}
答案 1 :(得分:1)
他正在要求正则表达式..所以这就是你如何做到的:
提供的正则表达式仅在变量长度仅为2个变量时(IE,要分割的字符串遵循与您提供的完全相同的模式)。 对于java中的Regex,您可以使用Pattern和Matcher类。
String[] vars = {"", ""};
String toCheck = "var1=val1&&var2=val2";
Pattern p = Pattern.compile(".*?=(.*?).*?=(.*$)");
Matcher m = p.matcher(toCheck);
while(m.find()){
vars[0] = m.group(1);
vars[1] = m.group(2);
}
我使用的非常有用的工具是:http://myregexp.com/signedJar.html
如果你不完全理解正则表达式很难理解它...但是只需要花时间和那个java applet进行测试^。它实时编译你的正则表达式并且确实提供了信息=)
*注意:无论“var1”,“var2”,“val1”和“val2”是什么,正则表达式都会匹配。 EG:它将匹配:username = derpa&& password = herpa
并且输出将使数组像:{derpa,herpa}
祝你好运..我讨厌正则表达式,现在我一直都在使用它们:D[编辑]
对于多个变量,我就是这样做的:
ArrayList<String> vars = new ArrayList<String>();
String toCheck = "var1=val1&&var2=val2&&var3=val3&&var4=val4";
Pattern p = Pattern.compile("(.*?)=(.*?)&&|(.*?)=(.*?)$");
Matcher m = p.matcher(toCheck);
while(m.find()){
String val = m.group(2);
if(val == null)
vars.add((m.group(4)));
else
vars.add(val);
}
for(int j = 0; j < vars.size(); j++){
System.out.println(vars.get(j));
}
这是经过测试和运作的。