in reply to regex square brackets exceptions

There's an easy way to check: try it out. There's another one that I like:
$ perl -Mre=debug -ce '/[a-z-[bc]]/' Compiling REx "[a-z-[bc]]" Final program: 1: ANYOF[\-[a-z][] (12) 12: EXACT <]> (14) 14: END (0) anchored "]" at 1 (checking anchored) stclass ANYOF[\-[a-z][] minlen 2 -e syntax OK Freeing REx: "[a-z-[bc]]"

It tells you that the final closing square bracket is interpreted as a literal (EXACT) match, so it surely didn't parse the regex class the same way as Java does.