我有一个模式,下面给出的匹配点四元符号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/