我有以下字符串,我需要使用java访问CN和O值, 我该怎么办?
jQuery2038205_146921({"name":"cn=cdf,o=abc","expiration":"656"});
答案 0 :(得分:2)
您可以使用以下正则表达式来捕获组1和组2中的值。
Java代码
String s = "jQuery2038205_146921({\"name\":\"cn=cdf,o=abc\",\"expiration\":\"656\"});";
Pattern p = Pattern.compile("\\bcn=([^,\"]+),o=([^,\"]+)");
Matcher m = p.matcher(s);
if (m.find()) {
System.out.printf("CN: %s, O: %s", m.group(1), m.group(2));
}
打印
CN: cdf, O: abc
另一方面,如果两个字符串的顺序可以不同,则需要像这样使用两个正则表达式,
String s = "jQuery2038205_146921({\"name\":\"cn=cdf,o=abc\",\"expiration\":\"656\"});";
Pattern p1 = Pattern.compile("\\bcn=([^,\"]+)");
Pattern p2 = Pattern.compile("\\bo=([^,\"]+)");
Matcher m1 = p1.matcher(s);
if (m1.find()) {
System.out.println("CN: " + m1.group(1));
}
Matcher m2 = p2.matcher(s);
if (m2.find()) {
System.out.println("O: " + m2.group(1));
}
打印
CN: cdf
O: abc
答案 1 :(得分:1)
如果可以使用JSON解析器,请执行此操作。如果没有,那么这里有些线也可能起作用:
String input = "jQuery2038205_146921({\"name\":\"cn=cdf,o=abc\",\"expiration\":\"656\"});";
String cn = input.replaceAll(".*\\bcn=([^\",]+).*", "$1");
String o = input.replaceAll(".*\\bo=([^\",]+).*", "$1");
System.out.println(cn);
System.out.println(o);
cdf
abc