Вы можете использовать
text.downcase.gsub(/(?<!\w)#{Regexp.escape(lookup_term)}(?!\w)/, replace_with_term)
Если вы действительно не хотите, чтобы строка переводилась в нижний регистр, а просто хотите сопоставление без учета регистра, используйте модификатор /i
и удалите .downcase
:
text.gsub(/(?<!\w)#{Regexp.escape(lookup_term)}(?!\w)/i, replace_with_term)
См. Онлайн-демонстрацию Ruby .
Результирующее регулярное выражение будет выглядеть как /(?<!\w)check\ \+(?!\w)/
, см. Rubular demo .
Обратите внимание, что значение \b
зависит от контекста, и соответствует пустому пространству (местоположению)
- Перед первым символом в строке, если первый символ является символом слова.
- После последнего символа в строке, если последний символ является символом слова.
- Между двумя символами в строке, где один является символом слова, а другой не является символом слова.
Шаблон (?<!\w)check\ \+(?!\w)
содержит однозначные границы слова , они всегда совпадают одинаково:
(?<!\w)
- левая граница слова, требует начала позиции строки или любого не слова символ непосредственно слева от текущего местоположения check\ \+
- check
, пробел и +
(?!\w)
- правая граница слова, требует конца строки позиция или любой другой символ, не являющийся словом, непосредственно справа от текущего местоположения.