Синтаксис #{word}
не работает для регулярных выражений. Используйте Regexp.new
вместо:
word = "below"
text = "I said, 'look out below'"
reg = Regexp.new("\\b#{word}\\b", true)
text = text.gsub(reg, "<b>\\0</b>")
Обратите внимание, что при использовании sting вам нужно экранировать от \b
до \\b
, или это интерпретируется как возврат. Если word
может содержать специальные символы регулярного выражения, экранируйте его, используя Regexp.escape
.
Также, заменив строку на <b>#{word}</b>
, вы можете изменить регистр строки: «BeloW» будет заменено на «ниже». \0
исправляет это, заменяя найденное слово. Кроме того, я добавил \\b
в начале, вы не хотите искать « день » и в конечном итоге «солнце день ».