use YAPE::Regex::Explain;
$regex = qr/.*([\$#\%>~]|\@\w~\$|\\\[\\e\[0m\\\] \[0m)\s?/;
print YAPE::Regex::Explain->new($regex)->explain;
__OUTPUT__
The regular expression:
(?-imsx:.*([\$#%>~]|\@\w~\$|\\\[\\e\[0m\\\] \[0m)\s?)
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
.* any character except \n (0 or more times
(matching the most amount possible))
----------------------------------------------------------------------
( group and capture to \1:
----------------------------------------------------------------------
[\$#%>~] any character of: '\$', '#', '%', '>',
'~'
----------------------------------------------------------------------
| OR
----------------------------------------------------------------------
\@ '@'
----------------------------------------------------------------------
\w word characters (a-z, A-Z, 0-9, _)
----------------------------------------------------------------------
~ '~'
----------------------------------------------------------------------
\$ '$'
----------------------------------------------------------------------
| OR
----------------------------------------------------------------------
\\ '\'
----------------------------------------------------------------------
\[ '['
----------------------------------------------------------------------
\\ '\'
----------------------------------------------------------------------
e 'e'
----------------------------------------------------------------------
\[ '['
----------------------------------------------------------------------
0m '0m'
----------------------------------------------------------------------
\\ '\'
----------------------------------------------------------------------
\] ']'
----------------------------------------------------------------------
' '
----------------------------------------------------------------------
\[ '['
----------------------------------------------------------------------
0m '0m'
----------------------------------------------------------------------
) end of \1
----------------------------------------------------------------------
\s? whitespace (\n, \r, \t, \f, and " ")
(optional (matching the most amount
possible))
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
Let me show you my (colourful) command prompt... :-) which looks like: ($hostname)$fullpath>
export PS1="\[\033[1;37m\](\[\033[1;32m\]`uname -n`\[\033[1;37m\])\[\0
+33[1;36m\]\$PWD\[\033[1;37m\]>\[\033[0m\] "
# ANSI colour commands
# \[\033[1;37m\] => set colour to white (37)
# \[\033[1;32m\] => set colour to green (32)
# \[\033[1;36m\] => set colour to cyan (36)
# ...
# \[\033[0m\] => set colour back to normal