Lua中重复正则表达式简化:匹配6组无前缀0x的十六进制数对
6对十六进制字符串匹配的简化正则写法
你原来的写法是对单个匹配单元的重复罗列,可以用量词大幅简化,同时建议加上首尾锚定避免误匹配包含目标格式的更长字符串:
最简通用写法(兼容大小写场景)
如果你的正则引擎支持i(不区分大小写)修饰符,直接使用:
^[0-9a-f]{2}(?: [0-9a-f]{2}){5}$
语法说明:
^、$分别匹配字符串的开头和结尾,确保整个字符串完全符合格式[0-9a-f]{2}匹配2位不带前缀的十六进制字符(?: [0-9a-f]{2}){5}是非捕获组,代表「空格+2位十六进制字符」的组合重复出现5次,加上开头的1组,刚好是6对的要求
特殊场景适配
- 如果你使用的环境中用
%s指代空格(比如部分脚本的格式化占位场景),可以调整为:^[0-9a-f]{2}(?:%s[0-9a-f]{2}){5}$ - 如果只允许小写十六进制字符,去掉
i修饰符即可;只允许大写的话把字符组改成[0-9A-F] - 如果允许数对之间存在多个空格/制表符,把单个空格替换为
\s+即可
内容的提问来源于stack exchange,提问作者IgorKushnir
相关产品推荐
相关产品推荐

