2012-07-02 1 views

답변

5

패턴 매칭 왼쪽 오른쪽으로 이동하여 다음 세그먼트를 시도하기 전에 IpAddr과 먼저 일치시킵니다. 경기가있을 때까지 역 추적은 없습니다. IpAddr과 같은 기본 입력 변수는 1 바이트와 일치합니다. 적절한 설명과 더 많은 예제는 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