2012-07-02 132 views

回答

5

模式匹配左所以在它嘗試以下細分之前,它將首先匹配IpAddr。直到比賽結束後纔會有回溯。像IpAddr這樣的默認類型變量匹配一個字節。有關正確的描述和更多示例,請參見Bit Syntax ExpressionsBit Syntax

作爲在這裏使用模式匹配的替代方法,您可以考慮使用binary模塊。有兩個功能可能對您有用:binary:match/2/3binary:split/2/3。這些搜索可能更適合您的問題。

作爲最後一種選擇,您可以嘗試使用正則表達式和re模塊。

6

你需要指定的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">> 
+0

如果大小可變,該怎麼辦? – jshadyjlo

+2

這種情況不會發生在這種情況下,對吧?如果是這樣,字節數也可以從變量讀取:'IpAddr:IpLength/binary'。 –

+0

不幸的是,在這種情況下,它可以隨eacg段中的字符數量而變化。 – rvirding