我试图将某些字符串输入转换为正确的格式以使用MAC地址。将纯字符串转换为MAC地址格式
所以我需要转换
00A0C914C829
到
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})+ $)'替换为'$&:' –
'[\ da-fA-F] {2}(?=(?:[\ da- fA-F] {2})+ $)' –
您是否需要实际(预)验证匹配的字符串,还是始终使用与上述相同的格式?如果是的话,乔伊的解决方案将为你工作。 –