00A0C914C829
to
00:A0:C9:14:C8:29
我有这个
PowerShell
脚本来实现这个。$string = "00A0C914C829"
$out = $string -replace "([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])", '$1$2:$3$4:$5$6:$7$8:$9$10:$11$12'
$out
这句话的意思是:"输出结果为:"
00:A0:C9:14:C8:29
但是这个正则表达式看起来太长了。
有没有办法使它更简洁?
- 我认为我需要使用
()
将每个部分分组成变量,这就是为什么它这么长的原因。我还尝试使用^([0-9A-Fa-f]){12}$
进行匹配,但是这给出了输出9$2:$3$4:$5$6:$7$8:$9$10:$11$12
(12个由1个字符组成的组) - 我还尝试了类似的正则表达式
^(([0-9A-Fa-f]){2}){6}$
(6组由2个字符组成的组),然后是替换:$1:$2:$3:$4:$5:$6
,但这给出了输出29:9:$3:$4:$5:$6
我认为问题在于我不理解如何正确地使用组...如果有人能指点我一下就好了!
[\da-fA-F]{2}(?=([\da-fA-F]{2})+$)
进行匹配,并将其替换为$&:
。 - Pranav C Balan[\da-fA-F]{2}(?=(?:[\da-fA-F]{2})+$)
- Pranav C Balan