我想要匹配的格式是:
# (Apple push notification codes)
"11a735e9 9f696c2f 700b2700 728042c6 137eeb7a 8442c27d 40e59d9e 3c7e0de7"
我能想到的最简单的表达方式是:/((\w{8}\s){7}\w{8})/i
有人能想到一个更简单的吗?
(我正在使用Ruby正则表达式)
更新 - 感谢user1096188,我删除了\ d - 这包含在\ w
中答案 0 :(得分:3)
您可以使用\b
检测字边界,并使用(?:
来阻止捕获组
/(?:\w{8}\b\s?){8}/
答案 1 :(得分:2)
如果匹配结束是整个字符串的结尾,则可以执行此操作。
(\w{8}(:?\s|$)){7}
答案 2 :(得分:0)
> "11a735e9 9f696c2f 700b2700 728042c6 137eeb7a 8442c27d 40e59d9e 3c7e0de7".match(/((\w{8}\s)+)/)
> $&
=> "11a735e9 9f696c2f 700b2700 728042c6 137eeb7a 8442c27d 40e59d9e 3c7e0de7"
答案 3 :(得分:0)
进一步采用@ zapthedingbat的解决方案,看起来代码只包含十六进制字符(0-9和a-f)和空格。所以你可能会为了准确而牺牲一点简单性。
我正在做出一个假设,但我怀疑字母g到z是无效的。 如果格式仅为十六进制(您应该检查Apple的文档以确定),则更紧密的匹配将是:
/(?:[0-9a-f]{8}\b\s?){8}/
修改强>
事实上,在Ruby中,看起来你应该能够做到:
/(?:\h{8}\b\s?){8}/