Как сопоставить заданный шаблон регулярного выражения, чтобы получить подстроку из строки - PullRequest
0 голосов
/ 30 октября 2018

у меня есть строка для бывшего "Abc Xyz Def OSSV-1810-017466-AB01 Def Utv" Как написать регулярное выражение, которое объединяет форматы, такие как "OSSV-1810-017466-AB01", и извлекает только это из любой заданной строки?

Что пробовали:

public class RegexTest { 
    public static void main(String[] args) { 
        String str = "Abc Xyz Def OSSV-1810-017466-AB01 Def Utv"; 
        Pattern pattern = Pattern.compile("[a-zA-Z\\-\\0-9\\-\\0-9\\-\\^A-Za-z0-9]"); 
        Matcher matcher = pattern.matcher(str); 
        System.out.println(matcher.toString()); 
        if(matcher.find()){ 
            System.out.println("found" + matcher.group(1)); 
        } 
        else{ 
            System.out.println("not found"); 
        } 
    } 
}   

Ответы [ 2 ]

0 голосов
/ 30 октября 2018
public static void main(String[] args) {
    String input="Abc Xyz Def OSSV-1810-017466-AB01 Def Utv";

    String regEx="([a-zA-Z ]*)((?:[A-Z]{4}-)(?:[0-9]{4}-)(?:[0-9]{6}-)(?:[A-Z0-9]{4}))([a-zA-Z ]*)";
    Matcher matcher = Pattern.compile(regEx).matcher(input);            

    if(matcher.matches()) {         
        System.out.println(matcher.group(2));
    }
}
0 голосов
/ 30 октября 2018

Вы можете использовать этот шаблон [A-Z]{4}-\\d{4}-\\d{6}-[A-Z]{2}\\d{2}.

Также измените matcher.group(1) на matcher.group(0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...