我在从url中提取值时遇到了一些问题。
下面是我经过测试的regex代码:https://regex101.com/r/rfRmhh/1
在这段代码中是反斜杠,我按照Erlang在这里的注释进行了操作,再次反斜杠:
字符串的Erlang文字语法使用"\“(反斜杠)字符作为转义代码。您需要在代码中和shell中,用一个额外的反斜杠,即"\“,在文字字符串中转义反斜杠。- http://erlang.org/doc/man/re.html
这是我的密码:
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)函数来获取值吗?
发布于 2018-06-16 19:43:48
您不需要regex模式中的前导或尾随/。在Erlang中,它们被视为一个文字/ (与PHP和可能更多的语言不同),这就是匹配失败的原因。
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选项:
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">>]}https://stackoverflow.com/questions/50891091
复制相似问题