ExpertRefresh

Egrep / Negated character classes  

1) does q[^u] matches Iraq?




2) [^1-6] matches








Negated character class

If you use [^..] instead of [..], the class matches any character that isn't listed. For example [^1-6] matches a character that's not 1 through 6.

Not the same as start

The ^ used here is the same as start-of-line caret, but the meaning is completely different.

Example

q[^u] matches Iraqi, Iraqian q[^u] doesn't match Qantas, because it called for a lower case q q[^u] doesn't match Iraq, because q is at the end (newline character is not ^u)

Meaning

Regex [^x] doesn't mean "match unless there is an x", but rather "match if there is something that is not x"


References