我正在处理内核模块,模块输出一个十六进制代码,使用正则表达式由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;
}
我们正在尝试以毫秒为单位读取十六进制代码。
答案 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+.*)