Java 如何使用正则表达式从此行提取子字符串

Java 如何使用正则表达式从此行提取子字符串,java,regex,Java,Regex,我有以下字符串行: dn:cn=Customer Management,ou=groups,dc=digitalglobe,dc=com 我想从上面的一行中摘录如下:客户管理 我尝试了以下正则表达式,但它完全符合我的要求: ^dn: cn=(.*?), 以下是测试上述表达式的java代码片段: Pattern pattern = Pattern.compile("^dn: cn=(.*?),"); String mydata = "dn: cn=Delivery Admin,ou=groups

我有以下字符串行:
dn:cn=Customer Management,ou=groups,dc=digitalglobe,dc=com

我想从上面的一行中摘录如下:
客户管理

我尝试了以下正则表达式,但它完全符合我的要求:

^dn: cn=(.*?),
以下是测试上述表达式的java代码片段:

Pattern pattern = Pattern.compile("^dn: cn=(.*?),");
String mydata = "dn: cn=Delivery Admin,ou=groups,dc=digitalglobe,dc=com";

Matcher matcher = pattern.matcher(mydata);
if(matcher.matches()) {
    System.out.println(matcher.group(1));
} else {
    System.out.println("No match found!");
}

输出为“未找到匹配项”…:(

您的正则表达式应该可以正常工作,但是
matches
尝试将正则表达式与整个字符串匹配。相反,请使用
find
方法,该方法将在字符串中的任意点查找匹配项

if(matcher.find()) {
    System.out.println(matcher.group(1));
} else {
    System.out.println("No match found!");
}

您的正则表达式应该可以正常工作,但是
匹配
尝试将正则表达式与整个字符串匹配。相反,请使用
查找
方法,该方法将在字符串中的任意点查找匹配项

if(matcher.find()) {
    System.out.println(matcher.group(1));
} else {
    System.out.println("No match found!");
}

您的问题是匹配程序想要匹配整个输入。请尝试在模式的末尾添加通配符

Pattern pattern = Pattern.compile("^dn: cn=(.*?),.*");
String mydata = "dn: cn=Delivery Admin,ou=groups,dc=digitalglobe,dc=com";

Matcher matcher = pattern.matcher(mydata);
if(matcher.matches()) {
    System.out.println(matcher.group(1));
} else {
    System.out.println("No match found!");
}

您的问题是匹配程序想要匹配整个输入。请尝试在模式的末尾添加通配符

Pattern pattern = Pattern.compile("^dn: cn=(.*?),.*");
String mydata = "dn: cn=Delivery Admin,ou=groups,dc=digitalglobe,dc=com";

Matcher matcher = pattern.matcher(mydata);
if(matcher.matches()) {
    System.out.println(matcher.group(1));
} else {
    System.out.println("No match found!");
}
请使用以下代码:

@注意:您必须使用“查找”而不是“匹配”

公共静态void main(字符串[]args) {

}请使用以下代码:

@注意:您必须使用“查找”而不是“匹配”

公共静态void main(字符串[]args) {


}

您的正则表达式应该可以工作。它以什么方式不满足您的要求?您可以使用lookback(
(?@Aaron-我也用上面的代码尝试了你的look-behind表达式…它仍然找不到…你的表达式在regexpal.com中工作得很好,但在我愚蠢的java代码中却不行。你的正则表达式应该可以工作。它以什么方式不做你想要的事情?你可以使用lookbehind(
(?@Aaron-我也用上面的代码尝试了你的look-behind表达式…它仍然找不到…你的表达式在regexpal.com中工作得很好,但在我愚蠢的java代码中却没有。