2016-02-03 9 views
4

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

reg=~r/(\d{4}.csv)/ 
raw="some craxy trashy text blabla 0044.csv" 
Regex.scan(reg,raw, capture: :all_but_first) 

Это возвращает 0044.csv.

Однако, мне нужно загрузить ~r/(\d{4}.csv)/ из базы данных, поэтому я сохранить его как

"~r/(\d{4}.csv)/" 

Это строка. Когда я загружаю его в переменную, это будет строка.

Как передать его Regex.scan?

+1

Я видел два из ваших вопросов и, кажется, вам необходимо включить множество пользовательских преобразований данных, которые могут быть настроены пользователями. Вы думали о том, чтобы дать им небольшой язык программирования, который они могут использовать, и который вы можете просто благополучно оценить? Я думал что-то вроде встраивания Lua через [luerl] (https://github.com/rvirding/luerl). –

ответ

7

Вы можете использовать Regex.compile/2 или Regex.compile!/2

iex> Regex.compile("(\\d{4}.csv)")  
{:ok, ~r/(\d{4}.csv)/} 

Вам потребуется дополнительный обратный слэш для побега, в противном случае вы будете в конечном итоге с:

iex> Regex.compile("(\d{4}.csv)")  
{:ok, ~r/(\x7F{4}.csv)/} 
Смежные вопросы