Java 用于拆分字符串的正则表达式

Java 用于拆分字符串的正则表达式,java,regex,Java,Regex,我已经尝试了上面的示例,对于strTest1来说效果很好。 但是,它不是对strTest2的解析 预期输出:{Q1=1PaeAO5JS+zUErWe1Ns8fR==, q2=v21PAaEaO5Js+zUErWe1Ns8fR=} 当我们按=拆分时,不应将其从值中删除 谢谢您正在按每个“=”对其进行拆分,并且您有3个将进一步解析搞砸 Map<String, String> fieldMap = new HashMap<String, String>(); String s

我已经尝试了上面的示例,对于strTest1来说效果很好。 但是,它不是对strTest2的解析

预期输出:{Q1=1PaeAO5JS+zUErWe1Ns8fR==, q2=v21PAaEaO5Js+zUErWe1Ns8fR=}

当我们按=拆分时,不应将其从值中删除


谢谢

您正在按每个“=”对其进行拆分,并且您有3个将进一步解析搞砸

Map<String, String> fieldMap = new HashMap<String, String>();

String strTest1 = "Q1 = '1PAaEaO5Js+zUErWe1Ns8fR==' and q2 = 'v21PAaEaO5Js+zUErWe1Ns8fR='";
String strTest2 = "Q1='1PAaEaO5Js+zUErWe1Ns8fR==' and q2='v21PAaEaO5Js+zUErWe1Ns8fR='";

String[] output = input.split("\\s+and\\s+");
        for(String s:output ){
            String [] params = s.split("=");

            String key = params[0].trim();
            String value = params[1].trim();
            fieldMap.put(key, value.substring(1, value.length()-1));        

        }
  System.out.println(fieldMap);

这里的问题是什么?问题是如果使用字符串[]params=s.split\\s+=\\s;然后,第一个测试字符串将通过,但第二个测试字符串将不通过。strTest1和strTest2都应通过。我将获得字符串中第一个=的位置,切掉它,然后消除可能的前导空格。对于关键点提取,你做的是相反的:扔掉第一个=和修剪后面的任何东西。也许你只需要将2传递给分割?字符串[]params=s.split=,2;。请参见,因此您需要将令牌限制为两个。
    Map<String, String> fieldMap = new HashMap<String, String>();

String strTest1 = "Q1 = '1PAaEaO5Js+zUErWe1Ns8fR==' and q2 = 'v21PAaEaO5Js+zUErWe1Ns8fR='";
String strTest2 = "Q2='1PAaEaO5Js+zUErWe1Ns8fR==' and q3='v21PAaEaO5Js+zUErWe1Ns8fR='";

String[] lines={strTest1,strTest2};
for (String input:lines){
  String[] output = input.split("\\s+and\\s+");
          for(String s:output ){
              String [] params = s.split("=",2);

              String key = params[0].trim();
              String value = params[1].trim();
              fieldMap.put(key, value.substring(1, value.length()-1));        

  }
}
System.out.println(fieldMap);