#regex #ruby
Вопрос:
У меня возникли проблемы с определением правильного регулярного выражения (в Ruby) для сопоставления слова в строке, но не в том случае, если слово начинается или заканчивается на -
или :
.
В настоящее время у меня есть:
/bmatch thisb/i
Регулярное выражение должно совпадать ( match this
) в:
please match this!
do not match this.
но не совпадают:
do not :match this
do not -match this
do not match this:
do not match this-
Я пытался:
/b[^:-]match this[^:-]b/i
Я был бы признателен за любую помощь! Я использую регулярное выражение в Ruby, если это имеет значение.
Комментарии:
1. Я думаю, что вы имеете в виду сопоставление строки в строке, а не слова в строке, учитывая ваш пример. Приятно видеть, что ты понял, как это сделать. В качестве упражнения подумайте, как бы вы сопоставили строку, которая могла бы начинаться или заканчиваться знаком минус или двоеточием, но не могла бы одновременно начинаться с минуса или двоеточия и заканчиваться знаком минус или двоеточием.
Ответ №1:
Я думаю, что понял это, используя отрицательный взгляд сзади и отрицательный взгляд сверху
/(?<![:-])bmatch thisb(?![:-])/i