use strict;
my $str = '0x7ffff00196a0 "\\r\\r\\r\\033[9999B[\\033[m\\033[36madmin\\033[m@\\033[m\\033[32mLeonards_switch\\033[m] > "
\\r routerboard: yes\\r\\n model: CRS112-8P-4S\\r\\n revision: r2\\r\\n serial-number: F1 4F0FC0637C\\r\\n firmware-type: qca8513 L \\r \\n f a c t o r y - f i r m w a r e : 6 . 4 7 . 1 0 \\r \\n c u r r e n t - f i r m w a r e : 6 . 4 7 . 1 0 \\r \\n u p g r a d e - f i r m w a r e : 6 . 4 7 . 1 0 \\r
\\x1b[1;31mHello \\x1b[2;37;41mWorld
\\033[38;2;1;22;252m
\\033[38;5;5m
\\033[48;5;5m
\\033[48;2;15;251;3m
\\033[0J
\\033[J
\\033[1J
\\033[3J
\\033[K
\\033[0K
\\033[u
\\033[s
\\033[8
\\033[7
\\033[m
\\033[6n
\\033[5G
\\033[=14h
\\033[=15l
\\033[?25h
\\033[?1049l';
my $regex = qr/((?:\\033|\e|\\x1B|\\x1b){1}(?:\[(?:=|\?|[0-9]*)[0-9]*[a-gA-GnmsuJKhlHL]{0,1}(?:(?:\;[0-9]*)*m){0,1}))/p;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
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 Perl, please visit: http://perldoc.perl.org/perlre.html