We all know the regular expression character classes, right? There are 12 standard classes:

[:alnum:] [:digit:] [:punct:] [:alpha:] [:graph:] [:space:] [:blank:] [:lower:] [:upper:] [:cntrl:] [:print:] [:xdigit:]

But have you seen a visual representation of what these classes match? Probably not. Therefore I created a visualization that illustrates which part of the ASCII set each character class matches. Call it a cheat sheet if you like:

A bunch of programs that I used

Just for my own reference, in case I ever need them again, here are the one-liners I used to create this cheat sheet:

perl -nle 'printf "%08b - %08b

", map { hex "0x".(split / /)[0], hex "0x".(split / /)[1] } $_ ' perl -nle 'printf "%03o - %03o

", map { (split / /)[0], (split / /)[1] } $_'

And I used this perl program to generate and check the red/green matches:

use warnings; use strict; my $red = "\e[31m"; my $green = "\e[32m"; my $clear = "\e[0m"; my ($start, $end) = @ARGV; die 'start or end not given' unless defined $start && defined $end; my @classes = qw/alnum alpha blank cntrl digit graph lower print punct space upper xdigit/; for (map { chr } $start..$end) { for my $class (@classes) { print "${green}1${clear}" if /[[:$class:]]/; print "${red}0${clear}" unless /[[:$class:]]/; } print "

" }

Credits

I was inspired to create this visualization when I saw a similar table for C's ctype.h character classification functions.