我有一个字符串,用于表示“ 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");
}
}
}
答案 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));
}
}