Что такое регулярное выражение для соответствия строке NOT в конце строки?
Регулярное выражение /abc$/
будет соответствовать abc
, которое появляется в конце строки. Как сделать инверсию?
Я хочу совместить abc
, который не находится в конце строки.
Кроме того, я буду использовать регулярное выражение для замены строк, поэтому я хочу записать только abc
, а не что-нибудь после строки, поэтому /abc.+$/
не работает, потому что он заменит не только abc
, но ничего после abc
тоже.
Какое правильное выражение используется?
Ответы
Ответ 1
/abc(?!$)/
(?!$)
является отрицательным просмотром. Он будет искать любое совпадение abc, за которым непосредственно не следует $
(конец строки)
Протестировано против
- abc ddee (матч)
- dddeee abc (нет соответствия)
- adfassdf abc s (совпадение)
- f abc ddee (матч)
применив его к вашему делу:
ruby-1.9.2-p290 :007 > "aslkdjfabcalskdfjaabcaabc".gsub(/abc(?!$)/, 'xyz')
=> "aslkdjfxyzalskdfjaxyzaabc"