Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 与Elixir中的捕获小组合作_Regex_Elixir_Phoenix Framework - Fatal编程技术网

Regex 与Elixir中的捕获小组合作

Regex 与Elixir中的捕获小组合作,regex,elixir,phoenix-framework,Regex,Elixir,Phoenix Framework,在文档中,我没有找到如何在Elixir中使用捕获组的描述。我该怎么做?比方说,我想从字符串中提取一个子字符串,并用其他内容替换它: ~r"\[tag1\](.+?)\[\/tag1\]" 如何访问介于][/之间的字符串?用于1个匹配项、所有匹配项或检出模块中的其他函数 文档在隐藏它方面做得很好,但它确实存在: 替换可以是字符串或函数。字符串用作每个匹配的替换,它允许通过\N或\g{N}访问特定捕获,其中N是捕获。如果使用了\0,则插入整个匹配 注意:\中的\N需要转义,因此它将是\\N 使用R

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

~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]"