Можете ли вы сопоставлять слова, не сопоставляя части слов с одинаковым написанием?

#regex #ruby

#регулярное выражение #ruby

Вопрос:

Мне было интересно, есть ли способ заменить независимые слова в строке без изменения частей слов с одинаковым написанием. Примером является преобразование:

 a = "hey how is the heyday"
  

в:

 "wrong how is the heyday"
  

Есть ли способ сделать это?

Это не сработает:

 a.gsub! "hey", "wrong"
# => "wrong how is the wrongday" 
  

Комментарии:

1. Просто измените "hey" на /bheyb/ в a.gsub! "hey", "wrong" . /bheyb/ это регулярное выражение b называется «разрывом слов». Оно требует, "hey" чтобы ему непосредственно не предшествовал или не следовал символ «word» (буква, цифра или подчеркивание). Не удивляйтесь, если ваш вопрос будет закрыт, потому что это дубликат, поскольку его форма задавалась много раз.

2. Благослови тебя господь, приятель, ты сделал больше, чем мог себе представить.

Ответ №1:

Как другие писали в комментариях, один из способов сделать это — использовать регулярное выражение в вашем gsub

   a = "hey how is the heyday"
  a.gsub(/heyb/,'wrong')
  

Регулярное выражение здесь ищет слово hey с границей слова.
Но также обратите внимание, что при использовании gsub! вы изменяете переменную, по которой вы ее вызывали. Если вы хотите присвоить новой переменной результат, используйте gsub alone без сбоев.