I'm attempting something which I feel should be fairly obvious to me but it's not. I'm trying to match a string which does NOT contain a specific sequence of characters. I've tried using
[^(ab)], etc. to match strings containing no 'a's or 'b's, or only 'a's or only 'b's or 'ba' but not match on 'ab'. The examples I gave won't match 'ab' it's true but they also won't match 'a' alone and I need them to. Is there some simple way to do this?
This question is related to
Using a character class such as
[^ab] will match a single character that is not within the set of characters. (With the
^ being the negating part).
To match a string which does not contain the multi-character sequence
ab, you want to use a negative lookahead:
And the above expression disected in regex comment mode is:
(?x) # enable regex comment mode ^ # match start of line/string (?: # begin non-capturing group (?! # begin negative lookahead ab # literal text sequence ab ) # end negative lookahead . # any single character ) # end non-capturing group + # repeat previous match one or more times $ # match end of line/string