首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Erlang - Regex游牧当它实际匹配时

Erlang - Regex游牧当它实际匹配时
EN

Stack Overflow用户
提问于 2018-06-16 19:32:17
回答 1查看 79关注 0票数 1

我在从url中提取值时遇到了一些问题。

下面是我经过测试的regex代码:https://regex101.com/r/rfRmhh/1

在这段代码中是反斜杠,我按照Erlang在这里的注释进行了操作,再次反斜杠:

字符串的Erlang文字语法使用"\“(反斜杠)字符作为转义代码。您需要在代码中和shell中,用一个额外的反斜杠,即"\“,在文字字符串中转义反斜杠。- http://erlang.org/doc/man/re.html

这是我的密码:

代码语言:javascript
复制
get_from_url()->
  Pattern = "/(.+)-([0-9_]+)x([0-9_]+)(-[0-9a-zA-Z(),\\-._]+)*\\.(jpg|jpeg|png|gif|JPG|JPEG|PNG|GIF)$/",
  Url = "http://localhost:8001/78326459041381-200x100.jpg",
  re:run(Url, Pattern).

它只返回“游牧民”。(但regex在测试现场起作用。)其次,即使我得到匹配,它也会返回类似于{match,[{0,14},{0,13}]}的内容。我假设这些是列表中匹配变量的偏移量?

那么人们会使用sublist(List1, Start, Len)函数来获取值吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-16 19:43:48

您不需要regex模式中的前导或尾随/。在Erlang中,它们被视为一个文字/ (与PHP和可能更多的语言不同),这就是匹配失败的原因。

代码语言:javascript
复制
1> Pattern = "(.+)-([0-9_]+)x([0-9_]+)(-[0-9a-zA-Z(),\\-._]+)*\\.(jpg|jpeg|png|gif|JPG|JPEG|PNG|GIF)$".
2> Url = "http://localhost:8001/78326459041381-200x100.jpg".
3> re:run(Url, Pattern).
{match,[{0,48},{0,36},{37,3},{41,3},{-1,0},{45,3}]}

这将返回一个{match, List},其中List是包含开始偏移量和匹配长度的元组列表。要以字符串或二进制的形式获取捕获的值,可以使用capture选项:

代码语言:javascript
复制
4> re:run(Url, Pattern, [{capture, all, list}]).
{match,["http://localhost:8001/78326459041381-200x100.jpg",
        "http://localhost:8001/78326459041381","200","100",[],
        "jpg"]}
5> re:run(Url, Pattern, [{capture, all, binary}]).
{match,[<<"http://localhost:8001/78326459041381-200x100.jpg">>,
        <<"http://localhost:8001/78326459041381">>,<<"200">>,
        <<"100">>,<<>>,<<"jpg">>]}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50891091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档