RegEx/ANSI/Style.regex.txt
# Matches an ANSI style (color or text option) (?> (?<ANSI_Reset> \e # An Escape \[ # Followed by a bracket (?<Reset>0m) # 0m indicates reset ) | (?<ANSI_Bold> \e # An Escape \[ # Followed by a bracket (?> (?<BoldStart>1m) | (?<BoldEnd>22m)) ) | (?<ANSI_Blink> \e # An Escape \[ # Followed by a bracket (?> (?> (?<BlinkStart>(?<BlinkSlow>5m) # 5m starts a slow blink | (?<BlinkFast>6m) # 6m starts a slow blink )) | (?<BlinkEnd>25m) # 25m stops blinks ) ) | (?<ANSI_Faint> \e # An Escape \[ # Followed by a bracket (?> (?<FaintStart>2m) # 2m starts faint | (?<FaintEnd>22m) # 22m stops faint ) ) | (?<ANSI_Italic> \e # An Escape \[ # Followed by a bracket (?> (?<ItalicStart>3m) # 3m starts italic | (?<ItalicEnd>23m) # 23m stops italic ) ) | (?<ANSI_Invert> \e # An Escape \[ # Followed by a bracket (?> (?<InvertStart>7m) # 7m starts invert | (?<InvertEnd>27m) # 27m stops invert ) ) | (?<ANSI_Hide> \e # An Escape \[ # Followed by a bracket (?> (?<HideStart>8m) # 8m starts hide | (?<HideEnd>28m) # 28m stops hide ) ) | (?<ANSI_Strikethrough> \e # An Escape \[ # Followed by a bracket (?> (?<StrikethroughStart>9m) # 9m starts Strikethrough | (?<StrikethroughEnd>29m) # 29m stops Strikethrough ) ) | (?<ANSI_Underline> \e # An Escape \[ # Followed by a bracket (?> (?<UnderlineStart>4m) # 4m starts underline | (?<DoubleUnderlineStart>21m) # 21m start a double underline | (?<UnderlineEnd>24m) # 24m stops underline ) ) | (?<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)) ) ) |