以下正则表达式是什么意思?

时间:2016-10-04 17:58:25

标签: regex perl

我正在处理内核模块,模块输出一个十六进制代码,使用正则表达式由perl脚本读取。

我无法理解它:

while (<>) {
    s/^([a-fA-F0-9]+)(\.)([a-fA-F0-9]+)(\s+.*)/sprintf("%s%s%s%s",  &$converter(hex($1)), $2, hex($3), $4)/oe;
} continue {
    print;
}

我们正在尝试以毫秒为单位读取十六进制代码。

1 个答案:

答案 0 :(得分:1)

s/^([a-fA-F0-9]+)(\.)([a-fA-F0-9]+)(\s+.*)/sprintf("%s%s%s%s",  &$converter(hex($1)), $2, hex($3), $4)/oe;

有4个捕获组,每个捕获组都用括号()覆盖:

$1 -> ([a-fA-F0-9]+)

$2 -> (\.)

$3 -> ([a-fA-F0-9]+)

$4 - &gt; (\s+.*)

Details here