需要在Java中提取字符串中的模式后面的值

时间:2018-05-22 14:51:39

标签: java

我有一个字符串如下:

String a= "member;range=12001-*: CN=marimar,OU=Employees,OU=Cisco 
Users,DC=cisco,DC=com, CN=cadautel,OU=Employees,OU=Cisco 
Users,DC=cisco,DC=com CN=rajaki,OU=Employees,OU=Cisco 
Users,DC=cisco,DC=com";

我需要获取CN属性的值,如'marimar','cadautel,'rajaki'。

我必须使用Java 7来做到这一点因此我不能使用String.split()任何人都可以帮助我提出逻辑。

谢谢!

1 个答案:

答案 0 :(得分:2)

String#split不是这项工作的最佳工具。改为使用模式匹配器:

String a = "member;range=12001-*: CN=marimar,OU=Employees,OU=Cisco
    Users,DC=cisco,DC=com, CN=cadautel,OU=Employees,OU=Cisco
    Users,DC=cisco,DC=com CN=rajaki,OU=Employees,OU=Cisco
    Users,DC=cisco,DC=com";
String pattern = "CN=([^,]+)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(a);
while (m.find()) {
    System.out.println("CN attribute: " + m.group(1) );
}

Demo