如何在 Elixir 中使用正则表达式模式匹配提取所有子字符串

Mur*_*tza 3 elixir phoenix-framework

细绳: Lorem ipsum {{dolor}} sit {{amet}}, consectetur adipisicing {{elit}},

我想从上面提到的字符串中提取包含在 {{ }} 中的所有标签的列表并对其进行处理,即检查数据库是否存在,然后将它们替换为降价链接,如下所示。

[substring](/tag/:substring_id) 
Run Code Online (Sandbox Code Playgroud)

我可以将它们替换为

String.replace(string, ~r/\{\{.+?\}\}/, "new substring")
Run Code Online (Sandbox Code Playgroud)

但这对我没有帮助,因为我无法处理子字符串,即检查数据库。

我没有找到任何将子字符串作为列表返回的 String.scan 或 String.find 类型的函数。如果您知道该怎么做,请告诉我。

预先感谢您的努力和时间:)

cod*_*hal 5

如果您只想将匹配的正则表达式提取到值列表中,则可以使用Regex.scan/3函数。

Regex.scan(~r/\{\{.+?\}\}/, string)
#[["{{dolor}}"], ["{{amet}}"], ["{{elit}}"]]
Run Code Online (Sandbox Code Playgroud)