繁体   English   中英

如何简化此正则表达式?

[英]How can I simplify this regular expression?

我尝试匹配的格式是:

# (Apple push notification codes)
"11a735e9 9f696c2f 700b2700 728042c6 137eeb7a 8442c27d 40e59d9e 3c7e0de7"

我能想到的最简单的表达式是: /((\\w{8}\\s){7}\\w{8})/i

有人能想到一个简单的吗?

(我正在使用Ruby正则表达式)

更新-感谢user1096188,我删除了\\ d-这已包含在\\ w中

您可以使用\\b来检测单词边界,并使用(?:防止捕获组

/(?:\w{8}\b\s?){8}/

如果匹配的结尾是整个字符串的结尾,则可以执行此操作。 (\\w{8}(:?\\s|$)){7}

> "11a735e9 9f696c2f 700b2700 728042c6 137eeb7a 8442c27d 40e59d9e 3c7e0de7".match(/((\w{8}\s)+)/)
> $&
 => "11a735e9 9f696c2f 700b2700 728042c6 137eeb7a 8442c27d 40e59d9e 3c7e0de7"

将@zapthedingbat的解决方案再进一步一步,看起来该代码仅包含十六进制字符(0-9和af)和空格。 因此,您可能会为了准确性而牺牲一些简单性。

我正在做一个假设,但我怀疑字母g到z无效。 如果格式仅是十六进制的(您应该检查Apple的文档以确保),则更严格的匹配是:

/(?:[0-9a-f]{8}\b\s?){8}/

编辑

实际上,在Ruby中,您应该可以做到:

/(?:\h{8}\b\s?){8}/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM