我有一个字符串"{request, {M, F, A}}"
,我知道它的类型是列表,但我不能使用[..]进行模式匹配。如何从中提取request
和{M, F, A}
?
答案 0 :(得分:2)
您可以在字符串的开头进行模式匹配。您可以尝试这样的事情:
1> Strip = fun(Input) -> lists:reverse(tl(lists:reverse(Input))) end.
#Fun<erl_eval.6.54118792>
2> Parse = fun(Input) ->
2> "{" ++ Tail = Input,
2> case Tail of
2> "request, " ++ MFT -> {request1, Strip(MFT)};
2> "request2, " ++ MFT -> {request2, Strip(MFT)}
2> end
2> end.
#Fun<erl_eval.6.54118792>
3> Parse("{request, {M, F, A}}").
{request1,"{M, F, A}"}
4> Parse("{request2, {M, F, A}}").
{request2,"{M, F, A}"}
5>
答案 1 :(得分:1)
如果您确定该字符串看起来与"{request, {M, F, A}}"
完全相同,则可以这样匹配:
[_, $r, $e, $q, $u, $e, $s, $t, _, _, ${, $M, _, $F, _, $A, $}, _] = "{request, {M, F, A}}"
你可以玩这个