RegEx/Java-从字符串中检索值
从下面的字符串中,我需要检索RegEx/Java-从字符串中检索值,java,regex,Java,Regex,从下面的字符串中,我需要检索groupA,groupB&groupC String str = "(&(objectCategory=group)(|(cn=groupA) (cn=groupB) (cn=groupC) ))" 如何使用Java实现这一点?只需在正则表达式中使用lookback和lookahead (?<=\\(cn=)[^()]*(?=\\)) 输出: String str = "(&(objectCategory=group)(|(cn=group
groupA
,groupB
&groupC
String str = "(&(objectCategory=group)(|(cn=groupA) (cn=groupB) (cn=groupC) ))"
如何使用Java实现这一点?只需在正则表达式中使用lookback和lookahead
(?<=\\(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
groupA
groupB
groupC
用户
模式
和匹配器
。搜索并将(cn=
和)
之间的任何内容(*?
)放入组1:
输出:
试试这个。抓拍。看演示
尝试了您的代码。结果=“[(&(objectCategory=group)(|(cn=,)(cn=,)(cn=,)(cn=,)(cn=,)(cn=,)(cn=,)(cn=,)(cn=,)))”@AshokFelix它对我有效。是的,非常有效。谢谢阿维纳什。你能解释一下你的正则表达式和@Nicolas的正则表达式之间的区别吗?\\(cn=(.*?\)他使用的是捕获组。但我没有用那个<代码>\\(cn=(.*?\),此正则表达式匹配
(cn=groupA)
,但仅捕获groupA。因为要捕获的文本是用正则表达式编写的。感谢Avinash的详细解释,选择您的作为答案,尽管Nicolas的解决方案出于必要也起了作用。感谢Nicolas,您的代码适合我:)很好,您可以叫我Nicolas并验证答案;-)
groupA
groupB
groupC
cn=([^)]*)