I'm confused by this:
[^ab] means “everything but a or b
...
. — The dot (.) matches any character, but not always. Sometimes it doesn’t match newlines. In some programming languages it never matches newlines. I’ve gotten bitten too often by the . not behaving like I think it should. It’s best to ignore this entirely
Is the negation class somehow more standardized than the `.`? I mean, if you do [^X] it's typically going to match any character that isn't X
except character returns and line feeds. `.` works the same way, except it will also match X. And for what it's worth, I can't think of the last time I ran into it somewhere that it also matched newlines