记正则表达式一则小小填坑记

需要匹配的内容如下:
“0x12 0x12 0x12”
三个重复的十六进制字符串,一开始的做法是:

(0x[0-9a-fA-F]{2}  ?){3}

该正则表达式中[0-9a-fA-F]是指0-9的数字,或者a-f的字母,或者A-F的字母。{2}是指重复2次。
其中?的作用是:0个或者1个。因此这样做是不符合的,因为0个空格就导致了这样0x120x120x12。
第二次的改法是:

(0x[0-9a-fA-F]{2}  {1}){3}

但是还是不满足,因为匹配的字符串第三个后没有空格。因此最终写法如下:

(0x[0-9a-fA-F]{2} {1}){2}(0x[0-9a-fA-F]{2}){1}$

最后一个$的作用是结束符,不加的话,“0x12 0x12 0x12 ”,最后几个空格都匹配

但是呢,这种匹配有点长,有点重复啊,最终完美的写法如下

(0x[0-9a-fA-F]{2}( |$)){3}

你可能感兴趣的:(新知识的学习)