From: crm_114@... Date: 2007-11-30T07:07:23+09:00 Subject: Negate a character sequence in a regular expression? For the following string: 'cat sheep horse cat tac dog' I would like to write a regular expression that matches any substring that is prefixed by the word 'cat', is then followed by any characters as long as those characters do not comprise the word 'cat', and then finally suffixed by the string 'dog'. Therefore, this expression should match the substring 'cat tac dog' in the above string. Obviously, if I write an expression like: irb(main):002:0> /cat.*dog/.match('cat sheep horse cat tac dog').to_s => "cat sheep horse cat tac dog" it will match the entire string. And the non-greedy Kleene doesn't buy me anything either since the expression matches the first cat found anyway: irb(main):003:0> /cat.*?dog/.match('cat sheep horse cat tac dog').to_s => "cat sheep horse cat tac dog" What I think I want to do is to negate a sequence of characters, rather than just a character class, but I have looked around and not found anything quite right. Of course, there are ways of hacking this out, e.g. I could reverse the string first and match 'god' followed by the first instance of 'tac', but I am hoping there is a more elegant way to do this with a single regular expression. Thanks--