从下面的字符串中,我需要检索groupA
,groupB
& groupC
String str = "(&(objectCategory=group)(|(cn=groupA) (cn=groupB) (cn=groupC) ))"
如何使用Java实现这一目标?
答案 0 :(得分:1)
在你的正则表达式中使用lookbehind和lookahead。
(?<=\\(cn=)[^()]*(?=\\))
说明:
(?<=\(cn=)
断言要匹配的字符必须以(cn=
[^()]
匹配任何不属于(
或)
的字符零次或多次。(?=\))
断言匹配的字符后面必须跟一个右括号)
<强>代码:强>
String str = "(&(objectCategory=group)(|(cn=groupA) (cn=groupB) (cn=groupC) ))";
Pattern regex = Pattern.compile("(?<=\\(cn=)[^()]*(?=\\))");
Matcher matcher = regex.matcher(str);
while(matcher.find()){
System.out.println(matcher.group(0));
}
<强>输出:强>
groupA
groupB
groupC
答案 1 :(得分:1)
用户Pattern
和Matcher
。在.*?
和(cn=
之间搜索并输入第1组()
):
Matcher matcher = Pattern.compile("\\(cn=(.*?)\\)").matcher("(&(objectCategory=group)(|(cn=groupA) (cn=groupB) (cn=groupC) ))");
while (matcher.find()) {
System.out.println(matcher.group(1));
}
输出:
groupA
groupB
groupC
答案 2 :(得分:1)