Мне нужно преобразовать строку типа «/ [\ w \ s] + /» в регулярное выражение.
"/[\w\s]+/" => /[\w\s]+/
Я пробовал использовать разные Regexp
методы, например:
Regexp.new("/[\w\s]+/") => /\/[w ]+\//
, аналогично Regexp.compile
и Regexp.escape
. Но ни один из них не вернулся, как я ожидал.
Кроме того, я попытался удалить обратную косую черту:
Regexp.new("[\w\s]+") => /[w ]+/
Но не повезло.
Затем я попытался сделать это просто:
str = "[\w\s]+"
=> "[w ]+"
Он убегает. Каким образом строка могла остаться такой, какая она есть, и преобразоваться в объект регулярного выражения?
ruby
regex
string
ruby-1.9.3
cmthakur
источник
источник
/#{your_regex}/#{options}
.options
это Hash, а Ruby не такой уж динамичный =)Этот метод безопасно экранирует все символы со специальным значением:
Например,
.
будет экранирован, поскольку иначе он интерпретируется как «любой символ».Не забудьте использовать строку в одинарных кавычках, если вы не хотите, чтобы срабатывала обычная строковая интерполяция, где обратная косая черта имеет особое значение.
источник
+.
), которые будут интерпретироваться в Regexp."\n"
является новой строкой, но'\n'
не является.Используя обозначение%:
или
Из справки :
источник
Драгоценный камень to_regexp может сделать работу.
Вы также можете использовать модификатор:
источник