import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(MacBook(10|9)|MacBookAir(10|[7-9])|Macmini[7-9]|MacPro[6-7]|iMacPro1|iMac(1[6-9]|2[0-2])),\\d|MacBookPro1(1,[45]|[2-8],\\d)";
final String string = "Model information: https://support.apple.com/en-us/HT212551\n"
+ "Published Date: October 28, 2021\n\n"
+ "Verification: https://regex101.com/r/OozSRv/5\n\n"
+ "1) Regex matches major identifier — Matches major model identifier numbers based on Apple's knowledge base article (more accurate):\n\n"
+ "(MacBook(10|9)|MacBookAir(10|[7-9])|Macmini[7-9]|MacPro[6-7]|iMacPro1|iMac(1[6-9]|2[0-2])),\\d|MacBookPro1(1,[45]|[2-8],\\d)\n\n"
+ "2) Regex matches current or higher — Matches model identifiers based on Apple's knowledge base article and may match higher versions before this regex is updated (more future-proof).\n\n"
+ "(MacBook(9|\\d{2})|MacBookAir([7-9]|\\d{2})|Macmini([7-9]|\\d{2})|MacPro([6-9]|1\\d)|iMacPro[1-9]|iMac(1[6-9]|2[0-9])),\\d|MacBookPro1(1,[45]|[2-9],\\d)\n\n"
+ "Either regex will match any of the supported following model identifiers:\n\n"
+ "https://support.apple.com/en-us/HT201608\n\n"
+ "Supported:\n"
+ "MacBook10,1\n"
+ "MacBook9,1\n\n"
+ "Unsupported:\n"
+ "MacBook8,1\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"
+ "MacBookAir10,1\n"
+ "MacBookAir9,1\n"
+ "MacBookAir8,2\n"
+ "MacBookAir8,1\n"
+ "MacBookAir7,2\n"
+ "MacBookAir7,2\n"
+ "MacBookAir7,1\n\n"
+ "Unsupported:\n"
+ "MacBookAir6,2\n"
+ "MacBookAir6,1\n"
+ "MacBookAir5,2\n"
+ "MacBookAir5,1\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"
+ "MacBookPro18,2\n"
+ "MacBookPro18,1\n"
+ "MacBookPro17,1\n"
+ "MacBookPro16,4\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"
+ "MacBookPro12,1\n"
+ "MacBookPro11,5\n"
+ "MacBookPro11,4\n\n"
+ "Unsupported:\n"
+ "MacBookPro11,3\n"
+ "MacBookPro11,2\n"
+ "MacBookPro11,1\n"
+ "MacBookPro10,2\n"
+ "MacBookPro10,1\n"
+ "MacBookPro9,2\n"
+ "MacBookPro9,1\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"
+ "Macmini9,1\n"
+ "Macmini8,1\n"
+ "Macmini7,1\n\n"
+ "Unsupported:\n"
+ "Macmini6,2\n"
+ "Macmini6,1\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"
+ "iMac21,2\n"
+ "iMac21,1\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\n"
+ "Unsupported:\n"
+ "iMac15,1\n"
+ "iMac14,4\n"
+ "iMac14,3\n"
+ "iMac14,2\n"
+ "iMac14,1\n"
+ "iMac13,2\n"
+ "iMac13,1\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