Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RegEx/Java-从字符串中检索值_Java_Regex - Fatal编程技术网

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=([^)]*)