import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(#)(?:([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?|([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])?)|(rgb|rgba)\\((?:\\s*(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s*,\\s*(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s*,\\s*(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)(?:\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*|\\s*(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s+(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s+(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s*|\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*|\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s*|\\s*(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s+(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s+(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*|\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)\\)|(hsl|hsla)\\((?:\\s*(-?[0-9]+(?:\\.[0-9]+)?(?:deg|rad|grad|turn)?)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*|\\s*(-?[0-9]+(?:\\.[0-9]+)?(?:deg|rad|grad|turn)?)\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*|\\s*(-?[0-9]+(?:\\.[0-9]+)?(?:deg|rad|grad|turn)?)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s*)\\)|(hwb)\\(\\s*(-?[0-9]+(?:\\.[0-9]+)?(?:deg|rad|grad|turn)?)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)?\\)|(lab|oklab)\\(\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)\\s+(-?(?:0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|(?:0|1(?:[0-1][0-9]?|2[0-4]?|[3-9])?|[2-9][0-9]?)(?:\\.[0-9]+)?|125(?:\\.0+)?))\\s+(-?(?:0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|(?:0|1(?:[0-1][0-9]?|2[0-4]?|[3-9])?|[2-9][0-9]?)(?:\\.[0-9]+)?|125(?:\\.0+)?))\\s*(?:(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)?\\)|(lch|oklch)\\(\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|(?:0|1(?:[0-4][0-9]?|[5-9])?|[2-9][0-9]?)(?:\\.[0-9]+)?|150(?:\\.0+)?)\\s+(-?[0-9]+(?:\\.[0-9]+)?(?:deg|rad|grad|turn)?)\\s*(?:(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)?\\)|(color)\\((?:(srgb|srgb-linear|display-p3|a98-rgb|prophoto-rgb|rec2020)(?:\\s+|\\s*,\\s*)(0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+|0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s+|\\s*,\\s*)(0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+|0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s+|\\s*,\\s*)(0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+|0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:(?:\\s+\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)?|(xyz|xyz-d50|xyz-d65)(?:\\s+|\\s*,\\s*)(-?[0-9]+(?:\\.[0-9]+)?%?)(?:\\s+|\\s*,\\s*)(-?[0-9]+(?:\\.[0-9]+)?%?)(?:\\s+|\\s*,\\s*)(-?[0-9]+(?:\\.[0-9]+)?%?)(?:(?:\\s+\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)?)\\)|(yellowgreen|yellow|whitesmoke|white|wheat|VisitedText|violet|turquoise|transparent|tomato|thistle|teal|tan|steelblue|springgreen|snow|slategrey|slategray|slateblue|skyblue|silver|sienna|SelectedItemText|SelectedItem|seashell|seagreen|sandybrown|salmon|saddlebrown|royalblue|rosybrown|red|rebeccapurple|purple|powderblue|plum|pink|peru|peachpuff|papayawhip|palevioletred|paleturquoise|palegreen|palegoldenrod|orchid|orangered|orange|olivedrab|olive|oldlace|navy|navajowhite|moccasin|mistyrose|mintcream|midnightblue|mediumvioletred|mediumturquoise|mediumspringgreen|mediumslateblue|mediumseagreen|mediumpurple|mediumorchid|mediumblue|mediumaquamarine|maroon|MarkText|Mark|magenta|LinkText|linen|limegreen|lime|lightyellow|lightsteelblue|lightslategrey|lightslategray|lightskyblue|lightseagreen|lightsalmon|lightpink|lightgrey|lightgreen|lightgray|lightgoldenrodyellow|lightcyan|lightcoral|lightblue|lemonchiffon|lawngreen|lavenderblush|lavender|khaki|ivory|indigo|indianred|hotpink|honeydew|HighlightText|Highlight|grey|greenyellow|green|GrayText|gray|goldenrod|gold|ghostwhite|gainsboro|fuchsia|forestgreen|floralwhite|firebrick|FieldText|Field|dodgerblue|dimgrey|dimgray|deepskyblue|deeppink|darkviolet|darkturquoise|darkslategrey|darkslategray|darkslateblue|darkseagreen|darksalmon|darkred|darkorchid|darkorange|darkolivegreen|darkmagenta|darkkhaki|darkgrey|darkgreen|darkgray|darkgoldenrod|darkcyan|darkblue|cyan|currentColor|crimson|cornsilk|cornflowerblue|coral|chocolate|chartreuse|CanvasText|Canvas|cadetblue|ButtonText|ButtonFace|ButtonBorder|burlywood|brown|blueviolet|blue|blanchedalmond|black|bisque|beige|azure|aquamarine|aqua|antiquewhite|aliceblue|ActiveText|AccentColorText|AccentColor)";
final String string = "#090\n"
+ "#009900\n"
+ "#090a\n"
+ "#009900aa\n\n"
+ "rgb(34, 12, 64, 0.6)\n"
+ "rgba(34, 12, 64, 0.6)\n"
+ "rgb(34 12 64 / 0.6)\n"
+ "rgba(34 12 64 / 0.3)\n"
+ "rgb(34 12 64 / 60%)\n"
+ "rgba(34.6 12 64 / 30%)\n\n"
+ "hsl(30, 100%, 50%, 0.6)\n"
+ "hsla(30, 100%, 50%, 0.6)\n"
+ "hsl(30 100% 50% / 0.6)\n"
+ "hsla(30 100% 50% / 0.6)\n"
+ "hsl(30 100% 50% / 60%)\n"
+ "hsla(30.2grad 100% 50% / 60%)\n\n"
+ "hwb(90 10% 10%)\n"
+ "hwb(90 10% 10% / 0.5)\n"
+ "hwb(90deg 10% 10%)\n"
+ "hwb(1.5708rad 60% 0%)\n"
+ "hwb(0.25turn 0% 40% / 50%)\n\n"
+ "lab(29.2345% 39.3825 20.0664)\n"
+ "lab(52.2345 40.1645 59.9971)\n"
+ "lab(60.2345 -5.3654 58.956)\n"
+ "lab(62.2345% -34.9638 47.7721)\n"
+ "lab(67.5345 -8.6911 -41.6019)\n"
+ "lab(29.69% 44.888% -29.04%)\n\n"
+ "lch(29.2345% 44.2 27)\n"
+ "lch(52.2345% 72.2 56.2)\n"
+ "lch(60.2345 59.2 95.2)\n"
+ "lch(62.2345% 59.2 126.2)\n"
+ "lch(67.5345% 42.5 258.2)\n"
+ "lch(29.69% 45.553% 327.1)\n\n"
+ "oklab(40.101% 0.1147 0.0453)\n"
+ "oklab(59.686% 0.1009 0.1192)\n"
+ "oklab(0.65125 -0.0320 0.1274)\n"
+ "oklab(66.016% -0.1084 0.1114)\n"
+ "oklab(72.322% -0.0465 -0.1150)\n"
+ "oklab(42.1% 41% -25%)\n\n"
+ "oklch(40.101% 0.12332 21.555)\n"
+ "oklch(59.686% 0.15619 49.7694)\n"
+ "oklch(0.65125 0.13138 104.097)\n"
+ "oklch(0.66016 0.15546 134.231)\n"
+ "oklch(72.322% 0.12403 247.996)\n"
+ "oklch(42.1% 48.25% 328.4)\n\n"
+ "color(srgb 100% 100% 100% / 100%)\n"
+ "color(xyz 999 999 999 / 100%)\n\n"
+ "yellowgreen\n"
+ "yellow\n"
+ "whitesmoke\n"
+ "white\n"
+ "wheat\n"
+ "violet\n"
+ "turquoise\n"
+ "tomato\n"
+ "thistle\n"
+ "teal\n"
+ "tan\n"
+ "steelblue\n"
+ "springgreen\n"
+ "snow\n"
+ "slategrey\n"
+ "slategray\n"
+ "slateblue\n"
+ "skyblue\n"
+ "silver\n"
+ "sienna\n"
+ "seashell\n"
+ "seagreen\n"
+ "sandybrown\n"
+ "salmon\n"
+ "saddlebrown\n"
+ "royalblue\n"
+ "rosybrown\n"
+ "red\n"
+ "rebeccapurple\n"
+ "purple\n"
+ "powderblue\n"
+ "plum\n"
+ "pink\n"
+ "peru\n"
+ "peachpuff\n"
+ "papayawhip\n"
+ "palevioletred\n"
+ "paleturquoise\n"
+ "palegreen\n"
+ "palegoldenrod\n"
+ "orchid\n"
+ "orangered\n"
+ "orange\n"
+ "olivedrab\n"
+ "olive\n"
+ "oldlace\n"
+ "navy\n"
+ "navajowhite\n"
+ "moccasin\n"
+ "mistyrose\n"
+ "mintcream\n"
+ "midnightblue\n"
+ "mediumvioletred\n"
+ "mediumturquoise\n"
+ "mediumspringgreen\n"
+ "mediumslateblue\n"
+ "mediumseagreen\n"
+ "mediumpurple\n"
+ "mediumorchid\n"
+ "mediumblue\n"
+ "mediumaquamarine\n"
+ "maroon\n"
+ "magenta\n"
+ "linen\n"
+ "limegreen\n"
+ "lime\n"
+ "lightyellow\n"
+ "lightsteelblue\n"
+ "lightslategrey\n"
+ "lightslategray\n"
+ "lightskyblue\n"
+ "lightseagreen\n"
+ "lightsalmon\n"
+ "lightpink\n"
+ "lightgrey\n"
+ "lightgreen\n"
+ "lightgray\n"
+ "lightgoldenrodyellow\n"
+ "lightcyan\n"
+ "lightcoral\n"
+ "lightblue\n"
+ "lemonchiffon\n"
+ "lawngreen\n"
+ "lavenderblush\n"
+ "lavender\n"
+ "khaki\n"
+ "ivory\n"
+ "indigo\n"
+ "indianred\n"
+ "hotpink\n"
+ "honeydew\n"
+ "grey\n"
+ "greenyellow\n"
+ "green\n"
+ "gray\n"
+ "goldenrod\n"
+ "gold\n"
+ "ghostwhite\n"
+ "gainsboro\n"
+ "fuchsia\n"
+ "forestgreen\n"
+ "floralwhite\n"
+ "firebrick\n"
+ "dodgerblue\n"
+ "dimgrey\n"
+ "dimgray\n"
+ "deepskyblue\n"
+ "deeppink\n"
+ "darkviolet\n"
+ "darkturquoise\n"
+ "darkslategrey\n"
+ "darkslategray\n"
+ "darkslateblue\n"
+ "darkseagreen\n"
+ "darksalmon\n"
+ "darkred\n"
+ "darkorchid\n"
+ "darkorange\n"
+ "darkolivegreen\n"
+ "darkmagenta\n"
+ "darkkhaki\n"
+ "darkgrey\n"
+ "darkgreen\n"
+ "darkgray\n"
+ "darkgoldenrod\n"
+ "darkcyan\n"
+ "darkblue\n"
+ "cyan\n"
+ "crimson\n"
+ "cornsilk\n"
+ "cornflowerblue\n"
+ "coral\n"
+ "chocolate\n"
+ "chartreuse\n"
+ "cadetblue\n"
+ "burlywood\n"
+ "brown\n"
+ "blueviolet\n"
+ "blue\n"
+ "blanchedalmond\n"
+ "black\n"
+ "bisque\n"
+ "beige\n"
+ "azure\n"
+ "aquamarine\n"
+ "aqua\n"
+ "antiquewhite\n"
+ "aliceblue\n\n"
+ "Canvas\n"
+ "CanvasText\n"
+ "LinkText\n"
+ "VisitedText\n"
+ "ActiveText\n"
+ "ButtonFace\n"
+ "ButtonText\n"
+ "ButtonBorder\n"
+ "Field\n"
+ "FieldText\n"
+ "Highlight\n"
+ "HighlightText\n"
+ "SelectedItem\n"
+ "SelectedItemText\n"
+ "Mark\n"
+ "MarkText\n"
+ "GrayText\n"
+ "AccentColor\n"
+ "AccentColorText\n\n"
+ "currentColor\n\n"
+ "transparent\n";
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
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