Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么这个问题会出现 badmatch 错误?我不知道为什么这会失败:
<<IpAddr, ":*:*">> = <<"2a01:e34:ee8b:c080:a542:ffaf:*:*">>.
您需要指定的大小,IpAddr以便它可以进行模式匹配:
IpAddr
1> <<IpAddr:28/binary, ":*:*">> = <<"2a01:e34:ee8b:c080:a542:ffaf:*:*">>. <<"2a01:e34:ee8b:c080:a542:ffaf:*:*">> 2> IpAddr. <<"2a01:e34:ee8b:c080:a542:ffaf">>
二进制文件的模式匹配从左到右进行,因此它将IpAddr在尝试下一个段之前首先匹配。在匹配之前没有回溯。默认类型变量如IpAddr匹配一个字节。有关正确描述和更多示例,请参阅位语法表达式和位语法。
作为在此处使用模式匹配的替代方法,您可以考虑使用该binary模块。有两个功能可能对您有用:binary:match/2/3和binary:split/2/3. 这些搜索可能更适合您的问题。
binary
binary:match/2/3
binary:split/2/3
作为最后一种选择,您可以尝试使用正则表达式和re模块。
re