Le regex /abc$/
correspondra à un abc
qui apparaît à la fin de la ligne. Comment faire l'inverse?
Je veux faire correspondre abc
qui ne se trouve pas à la fin d'une ligne.
De plus, je vais utiliser l'expression régulière pour remplacer les chaînes, donc je veux capturer uniquement abc
, rien après la chaîne, donc /abc.+$/
ne fonctionne pas, car il remplacerait non seulement abc
mais aussi après abc
.
Quelle est la regex correcte à utiliser?
/abc(?!$)/
(?!$)
est un lookahead négatif . Il recherchera toute correspondance d'abc qui n'est pas directement suivie d'un $
(fin de ligne)
Testé contre
l'appliquer à votre cas:
Ruby-1.9.2-p290 :007 > "aslkdjfabcalskdfjaabcaabc".gsub(/abc(?!$)/, 'xyz')
=> "aslkdjfxyzalskdfjaxyzaabc"