What is a regex to match a string NOT at the end of a line?
regex, ruby
Solution
/abc(?!$)/
`(?!$)` is a negative lookahead. It will look for any match of abc that is not directly followed by a `$` (end of line)
Tested against
- abcddee (match)
- dddeeeabc (no match)
- adfassdfabcs (match)
- fabcddee (match)
applying it to your case:
ruby-1.9.2-p290 :007 > "aslkdjfabcalskdfjaabcaabc".gsub(/abc(?!$)/, 'xyz')
=> "aslkdjfxyzalskdfjaxyzaabc"
Problem
The regex `/abc$/` will match an `abc` that does appear at the end of the line. How do I do the inverse? I want to match `abc` that isn't at the end of a line. Furthermore, I'm going to be using the regex to replace strings, so I want to capture only `abc`, not anything after the string, so `/abc.+$/` doesn't work, because it would replace not only `abc` but anything after `abc` too. What is the correct regex to use?