我有一个模式,下面给出的匹配点四元符号ipv6地址。

IPV4ADDRESS (([[:digit:]]{1,3}"."){3}([[:digit:]]{1,3}))
hex4         ([[:xdigit:]]{1,4})
hexseq       ({hex4}(:{hex4}*))
hexpart      ({hexseq}|({hexseq}::({hexseq}?))|::{hexseq})
IPV6ADDRESS  ({hexpart}(":"{IPV4ADDRESS})?)

我用
%x S_rule S_dst_ip

<S_rule>(dst-ip){SPACE}   {

           BEGIN(S_dst_ip);

        }


<S_dst_ip>\{{IPV6ADDRESS}\}  {

       /*code to process the sring here.*/
     }

匹配表单的输入
dst-ip {3ffe:1900:4545:3:200:f8ff:fe21:67cf}

由于某种原因,给定的正则表达式似乎与上面的模式不匹配。是否有人能够友好地指出我的代码中的错误。
有人能指出我代码中的错误吗?

最佳答案

我认为*可能放错地方了:

hexseq       ({hex4}(:{hex4}*))

这就是你的意思吗?
hexseq       ({hex4}(:{hex4})*)

关于c - 用于识别IPV6地址的Lex模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13736647/

10-12 15:21