【发布时间】:2018-12-08 13:21:13
【问题描述】:
你能帮我简化下面的正则表达式吗:
(^0x)([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})
我想要以下结果 如果字符串以 0x 开头,则匹配下一个表达式
0x010203040506
应该产生
- group 1: 01
- group 2: 02
- group 3: 03
- group 4: 04
- group 5: 05
- group 6: 06
如果字符串不以 0x 开头,那么应该没有匹配项。
谢谢,
【问题讨论】:
-
这无法简化,因为您涉及许多捕获组。但它可能会有点短:
(^0x)([0-9a-f]{2})((?2))((?2))((?2))((?2))((?2)) -
你想匹配什么,你的首选结果是什么?
-
或
\A0x|\G(?!\A)[0-9a-f]{2},如果您不打算同时验证。 -
捕获组旨在将多个模式组合在一起,而您正在尝试创建同一捕获组的多个副本。为什么会这样?
标签: regex preg-match regex-group regex-greedy