如何匹配给定的正则表达式模式以从字符串获取子字符串

时间:2018-10-30 05:23:12

标签: java regex string

我有一个字符串,用于表示“ 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 :(得分:1)

您可以使用此模式[A-Z]{4}-\\d{4}-\\d{6}-[A-Z]{2}\\d{2}

也将matcher.group(1)更改为matcher.group(0)

答案 1 :(得分:0)

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