如何将字符串转换为正则表达式

时间:2016-02-03 16:49:48

标签: elixir

我有这段代码

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 个答案:

答案 0 :(得分:9)

您可以使用Regex.compile/2Regex.compile!/2

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

你需要一个额外的反斜杠来逃避,否则你最终会得到:

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