我有一个如下的正则表达式和值
2> re:run("first second", "^(?<foo>\\w+) (?<bar>\\w+)$", [{capture, [foo, bar], list}]).
{match,["first","second"]}
3>
这里我将foo与“first”匹配,将bar与“second”匹配。问题是在我的应用程序(url mapper)中,我不知道将有多少命名的子模式,以及它们的名称是什么。因此,我希望它们像这样匹配
2> re:magic_run("first second", "^(?<foo>\\w+) (?<bar>\\w+)$" ).
{match,[{foo, "first"},{bar, "second"}]}
我关心的不是输出格式。我希望能够将值与子模式名称匹配。有没有办法将值与子模式配对?
2条答案
按热度按时间2q5ifsrm1#
对于在2022年对此感兴趣的人。您可以获得指定捕获组的值,如下所示:
capture
后面的捕获组名称指定要读取的值。ref:https://www.erlang.org/doc/man/re.html#run-3dddzy1tm2#
如果你的字符串不是正则的,不要使用正则表达式。特别是在你的情况下,我强烈建议使用某种类型的String.split()方法(从未编写过Erlang,但我认为有人可能已经实现了这一点)。