Как извлечь подстроку из этой строки, используя RegEx - PullRequest
0 голосов
/ 16 октября 2018

У меня есть следующая строка: 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!");
}

Вывод «Не найдено совпадений» ...: (

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Ваша проблема в том, что устройство сопоставления хочет соответствовать вводу целом .Попробуйте добавить подстановочный знак в конец шаблона.

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 голосов
/ 16 октября 2018

Пожалуйста, используйте следующий код:

@ ПРИМЕЧАНИЕ: вместо использования совпадений вы должны использовать find

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!");
}

}

0 голосов
/ 16 октября 2018

Ваше регулярное выражение должно работать правильно, но matches пытается сопоставить регулярное выражение со строкой всей .Вместо этого используйте метод find, который будет искать совпадение в любой точке строки.

if(matcher.find()) {
    System.out.println(matcher.group(1));
} else {
    System.out.println("No match found!");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...