Подтвердить что ты не робот

Что такое регулярное выражение для соответствия строке NOT в конце строки?

Регулярное выражение /abc$/ будет соответствовать abc, которое появляется в конце строки. Как сделать инверсию?

Я хочу совместить abc, который не находится в конце строки.

Кроме того, я буду использовать регулярное выражение для замены строк, поэтому я хочу записать только abc, а не что-нибудь после строки, поэтому /abc.+$/ не работает, потому что он заменит не только abc, но ничего после abc тоже.

Какое правильное выражение используется?

4b9b3361

Ответ 1

/abc(?!$)/

(?!$) является отрицательным просмотром. Он будет искать любое совпадение abc, за которым непосредственно не следует $ (конец строки)

Протестировано против

  • abc ddee (матч)
  • dddeee abc (нет соответствия)
  • adfassdf abc s (совпадение)
  • f abc ddee (матч)

применив его к вашему делу:

ruby-1.9.2-p290 :007 > "aslkdjfabcalskdfjaabcaabc".gsub(/abc(?!$)/, 'xyz')
  => "aslkdjfxyzalskdfjaxyzaabc"