我有以下字符串行:
dn: cn=Customer Management,ou=groups,dc=digitalglobe,dc=com
我只想从上面的行中提取此内容:Customer Management
我已经尝试过以下RegEx表达式,但它确实可以满足我的要求:
^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!");
}
输出为“未找到匹配项” ...:(
答案 0 :(得分:2)
您的正则表达式应该可以正常工作,但是matches
尝试将正则表达式与 entire 字符串匹配。而是使用find
方法,该方法将在字符串的任何位置寻找匹配项。
if(matcher.find()) {
System.out.println(matcher.group(1));
} else {
System.out.println("No match found!");
}
答案 1 :(得分:0)
您的问题是匹配器要匹配整个输入。尝试在模式末尾添加通配符。
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!");
}
答案 2 :(得分:0)
请使用以下代码:
@注意:您不必使用匹配项,而必须使用查找
public static void main(String [] args) {
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.find()) {
System.out.println(matcher.group(1));
} else {
System.out.println("No match found!");
}
}