import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(MacBook[1-7],\\d|MacBookAir[1-4],\\d|MacBookPro[1-8],\\d|Macmini[1-5],\\d|iMac(1[0-2]|[4-9]|),\\d|^MacPro[1-5],\\d$)";
final String string = "Model information: https://support.apple.com/en-us/HT210222\n"
+ "Published Date: February 01, 2021\n\n"
+ "Validation: https://regex101.com/r/p5r9WT/3/\n\n"
+ "This regex is exact. No new models are supported.\n\n"
+ "(MacBookAir[5-9]|MacBookPro(9|1[0-6])|MacPro[6-7]|iMac(Pro1|1[3-9]|20)|MacBook(10|9|8)|Macmini[6-8]),\\d\n\n"
+ "pattern matches:\n\n"
+ "https://support.apple.com/en-us/HT201608\n\n"
+ "Supported:\n"
+ "MacBook10,1\n"
+ "MacBook9,1\n"
+ "MacBook8,1\n\n"
+ "Unsupported:\n"
+ "MacBook7,1\n"
+ "MacBook6,1\n"
+ "MacBook5,2\n"
+ "MacBook5,1\n"
+ "MacBook4,1\n"
+ "MacBook3,1\n"
+ "MacBook2,1\n"
+ "MacBook1,1\n\n"
+ "https://support.apple.com/en-us/HT201862\n\n"
+ "Supported:\n"
+ "MacBookAir9,1\n"
+ "MacBookAir8,2\n"
+ "MacBookAir8,1\n"
+ "MacBookAir7,2\n"
+ "MacBookAir7,2\n"
+ "MacBookAir7,1\n"
+ "MacBookAir6,2\n"
+ "MacBookAir6,1\n"
+ "MacBookAir6,2\n"
+ "MacBookAir6,1\n"
+ "MacBookAir5,2\n"
+ "MacBookAir5,1\n\n"
+ "Unsupported:\n"
+ "MacBookAir4,2\n"
+ "MacBookAir4,1\n"
+ "MacBookAir3,2\n"
+ "MacBookAir3,1\n"
+ "MacBookAir2,1\n"
+ "MacBookAir1,1\n\n"
+ "https://support.apple.com/en-us/HT201300\n\n"
+ "Supported:\n"
+ "MacBookPro16,3\n"
+ "MacBookPro16,2\n"
+ "MacBookPro16,1\n"
+ "MacBookPro15,4\n"
+ "MacBookPro15,3\n"
+ "MacBookPro15,2\n"
+ "MacBookPro15,1\n"
+ "MacBookPro14,3\n"
+ "MacBookPro14,2\n"
+ "MacBookPro14,1\n"
+ "MacBookPro13,3\n"
+ "MacBookPro13,2\n"
+ "MacBookPro13,1\n"
+ "MacBookPro11,5\n"
+ "MacBookPro11,4\n"
+ "MacBookPro12,1\n"
+ "MacBookPro11,3\n"
+ "MacBookPro11,2\n"
+ "MacBookPro11,1\n"
+ "MacBookPro10,1\n"
+ "MacBookPro11,1\n"
+ "MacBookPro10,2\n"
+ "MacBookPro10,1\n"
+ "MacBookPro9,2\n"
+ "MacBookPro9,1\n\n"
+ "Unsupported:\n"
+ "MacBookPro8,3\n"
+ "MacBookPro8,2\n"
+ "MacBookPro8,1\n"
+ "MacBookPro7,1\n"
+ "MacBookPro6,2\n"
+ "MacBookPro6,1\n"
+ "MacBookPro5,5\n"
+ "MacBookPro5,4\n"
+ "MacBookPro5,3\n"
+ "MacBookPro5,2\n"
+ "MacBookPro5,1\n"
+ "MacBookPro4,1\n"
+ "MacBookPro3,1\n"
+ "MacBookPro2,2\n"
+ "MacBookPro2,1\n"
+ "MacBookPro1,2\n"
+ "MacBookPro1,1\n\n"
+ "https://support.apple.com/en-us/HT201894\n\n"
+ "Supported:\n"
+ "Macmini8,1\n"
+ "Macmini7,1\n"
+ "Macmini6,2\n"
+ "Macmini6,1\n\n"
+ "Unsupported:\n"
+ "Macmini5,3\n"
+ "Macmini5,2\n"
+ "Macmini5,1\n"
+ "Macmini4,1\n"
+ "Macmini3,1\n"
+ "Macmini2,1\n"
+ "Macmini1,1\n\n"
+ "https://support.apple.com/en-us/HT201634\n\n"
+ "Supported:\n"
+ "iMac20,2\n"
+ "iMac20,1\n"
+ "iMac19,2\n"
+ "iMac19,1\n"
+ "iMac18,3\n"
+ "iMac18,2\n"
+ "iMac18,1\n"
+ "iMac17,1\n"
+ "iMac16,2\n"
+ "iMac16,1\n"
+ "iMac15,1\n"
+ "iMac14,4\n"
+ "iMac14,3\n"
+ "iMac14,2\n"
+ "iMac14,1\n"
+ "iMac13,2\n"
+ "iMac13,1\n\n"
+ "Unsupported:\n"
+ "iMac12,2\n"
+ "iMac12,1\n"
+ "iMac11,3\n"
+ "iMac11,2\n"
+ "iMac11,1\n"
+ "iMac10,1\n"
+ "iMac9,1\n"
+ "iMac8,1\n"
+ "iMac7,1\n"
+ "iMac6,1\n"
+ "iMac5,2\n"
+ "iMac5,1\n"
+ "iMac4,2\n"
+ "iMac4,1\n"
+ "iMac,1\n\n"
+ "https://support.apple.com/en-us/HT210222\n\n"
+ "Supported:\n"
+ "iMacPro1,1\n\n"
+ "https://support.apple.com/en-us/HT202888\n\n"
+ "Supported:\n"
+ "MacPro7,1\n"
+ "MacPro6,1\n\n"
+ "Unsupported:\n"
+ "MacPro5,1\n"
+ "MacPro4,1\n"
+ "MacPro3,1\n"
+ "MacPro2,1\n"
+ "MacPro1,1";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html