Erlang 使用列表中的起点和终点查找字符串中的子字符串

Erlang 使用列表中的起点和终点查找字符串中的子字符串,erlang,substring,Erlang,Substring,我有一个类似于list=[{0,12},{0,12},{-1,0},{0,12},{0,4},{1,2}]的列表和一个字符串Str=”https://www.youtube.com/watch?v=WQfdwsPao9E“,现在我必须使用列表中的起点和终点查找所有子字符串 我希望子字符串以类似[”的列表形式返回https://www","https://www“,…” 我试着用这个: C=lists:map(fun({X,Y}) -> string:sub_string(Str,X,Y)

我有一个类似于
list=[{0,12},{0,12},{-1,0},{0,12},{0,4},{1,2}]
的列表和一个字符串
Str=”https://www.youtube.com/watch?v=WQfdwsPao9E“
,现在我必须使用列表中的起点和终点查找所有子字符串

我希望子字符串以类似
[”的列表形式返回https://www","https://www“,…”

我试着用这个:

C=lists:map(fun({X,Y}) -> string:sub_string(Str,X,Y) end,List)
1>List=[{0,12},{0,12},{-1,0},{0,12},{0,4},{1,2}]。
[{0,12},{0,12},{-1,0},{0,12},{0,4},{1,2}]
2> Str=”https://www.youtube.com/watch?v=WQfdwsPao9E".
"https://www.youtube.com/watch?v=WQfdwsPao9E"
3> Len=长度(Str)。
43
4> [string:sub_string(Str,max(1,X),min(Len,Y))|{X,Y}
您可能需要调整字符串中的索引以完全满足您的需要

[编辑]看起来我没有正确解释元组的含义。我认为它是{Fist_Char_Index,Char_Number},或者{-1,0},如果没有找到匹配项。因此,您应该使用:

[string:sub_string(Str,X+1,X+Y) || {X,Y} <- List, {X,Y} =/= {-1,0}].

[string:sub_string(Str,X+1,X+Y)|{X,Y}您要查找的确切输出是什么?
-1
不是有效的索引,即使您从0索引(
string:sub_string
从1索引)@Dogbert我生成的列表使用的是
re:run
,我想从
list
中获取索引的子字符串,如果索引从
1
开始,那么你能建议一个解决方案,修改
list
,然后找到子字符串。有什么理由不要求
re:run
返回字符串吗?例如
re:run>((“foo”、(()(“,[{capture,all,list}])={match,[“fo”,“f”,“o”]}
。为什么
re:run
返回像
{-1,0}
?当
list=[{0,37}、{0,17}、{0,4}、{7,10}、{7,7}、{8,5}、{-1,0}、{-1,0}、{-1,0}、{-1,0}、{Str 0}、{0,1}、{0}、{0,0}、{http://erlang.org/doc/man/string.html"
,它显示由于使用
[string:sub_string(Str,max(1,X),min(Len,Y))|{X,Y}生成负索引而导致的异常
[string:sub_string(Str,X+1,X+Y) || {X,Y} <- List, {X,Y} =/= {-1,0}].