RegEx/ANSI/Color.regex.txt
# Matches an ANSI color (?> (?<ANSI_24BitColor> (?-i)\e # An Escape \[ # Followed by a bracket (?> (?<IsForegroundColor>38) | (?<IsBackgroundColor>48) | (?<IsUnderlineColor>58));2;(?<Color>(?<Red>(?>[0-2][0-5][0-5]|[0-1]\d\d|\d{1,2})) # Red is the first 0-255 value ;(?<Green>(?>[0-2][0-5][0-5]|[0-1]\d\d|\d{1,2})) # Green is the second 0-255 value ;(?<Blue>(?>[0-2][0-5][0-5]|[0-1]\d\d|\d{1,2})) # Blue is the third 0-255 value m) ) | (?<ANSI_8BitColor> (?-i)\e # An Escape \[ # Followed by a bracket (?> (?<IsForegroundColor>38) | (?<IsBackgroundColor>48) | (?<IsUnderlineColor>58));5;(?<Color>(?> (?<StandardColor>[0-7]) # 0 -7 are standard colors m | (?<BrightColor>(?>[8-9]|1[0-5])) # 8-15 are bright colors m | (?<CubeColor>(?>[0-2][0-3][0-1]|[0-1]\d\d|\d{1,2})) # 16-231 are cubed colors m | (?<GrayscaleColor>(?>[0-2][0-5][0-5]|[0-1]\d\d|\d{1,2})) # 232-255 are grayscales m)) ) | (?<ANSI_4BitColor> \e # An Escape \[ # Followed by a bracket (?<Color>(?> (?<IsBright>1)?\;{0,1}(?<IsForegroundColor>3) | (?<IsBright>(?<IsForegroundColor>9)) | (?<IsBright>1)?\;{0,1}(?<IsBackgroundColor>4) | (?<IsBright>(?<IsBackgroundColor>10)))(?<ColorNumber>[0-7])m) ) | (?<ANSI_DefaultColor> (?-i)\e # An Escape \[ # Followed by a bracket (?<Color>(?> (?<DefaultForeground>39) # 39 Represents the default foreground color m | (?<DefaultForeground>49) # 49 Represents the default background color m)) ) ) |