在 Elixir 中使用捕获组

Ram*_*ano 1 regex elixir phoenix-framework

在文档中我没有找到如何在 Elixir 中使用捕获组的描述。我怎样才能做到这一点?比如说,我想从字符串中提取一个子字符串并将其替换为其他内容:

~r"\[tag1\](.+?)\[\/tag1\]"
Run Code Online (Sandbox Code Playgroud)

如何访问之间的字符串] [/

Dog*_*ert 5

用于Regex.run/31 场比赛、Regex.scan/3所有比赛,或查看Regex模块中的其他功能。

iex(1)> regex = ~r"\[tag1\](.+?)\[\/tag1\]"
~r/\[tag1\](.+?)\[\/tag1\]/
iex(2)> [_, inner] = Regex.run(regex, "[tag1]bar[/tag1]")
["[tag1]bar[/tag1]", "bar"]
iex(3)> inner
"bar"
iex(4) Regex.scan(regex, "[tag1]bar[/tag1] [tag1]baz[/tag1]")
[["[tag1]bar[/tag1]", "bar"], ["[tag1]baz[/tag1]", "baz"]]
Run Code Online (Sandbox Code Playgroud)