使用java中的正则表达式拆分此字符串(var1 = val1&& var2 = val2)

时间:2012-03-13 13:07:22

标签: java regex string

我有这个字符串var1=val1&&var2=val2。使用java的正则表达式支持我想像这样{val1, val2}拆分字符串。即,结果数组应包含val1val2。换句话说,我想删除以等号结尾的单词和特殊字符&&我想用正则表达式做所有这些。有人可以帮我这个吗?

2 个答案:

答案 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));
        }

这是经过测试和运作的。