Regex 与Elixir中的捕获小组合作
在文档中,我没有找到如何在Elixir中使用捕获组的描述。我该怎么做?比方说,我想从字符串中提取一个子字符串,并用其他内容替换它:Regex 与Elixir中的捕获小组合作,regex,elixir,phoenix-framework,Regex,Elixir,Phoenix Framework,在文档中,我没有找到如何在Elixir中使用捕获组的描述。我该怎么做?比方说,我想从字符串中提取一个子字符串,并用其他内容替换它: ~r"\[tag1\](.+?)\[\/tag1\]" 如何访问介于][/之间的字符串?用于1个匹配项、所有匹配项或检出模块中的其他函数 文档在隐藏它方面做得很好,但它确实存在: 替换可以是字符串或函数。字符串用作每个匹配的替换,它允许通过\N或\g{N}访问特定捕获,其中N是捕获。如果使用了\0,则插入整个匹配 注意:\中的\N需要转义,因此它将是\\N 使用R
~r"\[tag1\](.+?)\[\/tag1\]"
如何访问介于][/
之间的字符串?用于1个匹配项、所有匹配项或检出模块中的其他函数
文档在隐藏它方面做得很好,但它确实存在: 替换可以是字符串或函数。字符串用作每个匹配的替换,它允许通过\N或\g{N}访问特定捕获,其中N是捕获。如果使用了\0,则插入整个匹配 注意:
\
中的\N
需要转义,因此它将是\\N
使用Regex.replace/4
(或String.replace/4
,因为字符串是第一个参数),只需一个命令即可完成此操作
实际上,您不需要首先捕获介于][\
之间的内容。您只需要匹配并替换它。此解决方案使用“查找”,您可以在此处找到更多信息:
请提供您的确切字符串。或者只是您需要的示例。它只找到第一个实例,我如何才能找到所有实例?
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"]]
iex(1)> String.replace("[tag1]foo[/tag1]", ~r"\w+(?=\[)", "bar")
"[tag1]bar[/tag1]"