【发布时间】:2018-07-31 23:40:39
【问题描述】:
我正在读取一个文件,我想找到一个时间戳值并将其替换为 0,然后再将其输出到另一个文件。所以我试图搜索和替换这个值 TIME="20180731.5622743" 对于文件中的类似内容 TIME="00000000.0000000"
到目前为止,我已经得到了..
open(INPUT, $path) or die $!;
open(OUTPUT, ">$susex_path") or die $!;
while(<INPUT>){
$line =~ s/([0-9]+8.[0-9]+7)/000000.0000000/g;
print OUTPUT $line;
}
}
close(INPUT);
close(OUTPUT);
搜索和替换仅部分起作用,因为该行包含我不想替换的其他时间戳。如果我包含完整的位来搜索和替换引号似乎会阻止成功的搜索和替换..例如(
$line =~ s/TIME=\"([0-9]+8.[0-9]+7)\"/TIME=\"00000000.0000000\"/g
非常感谢任何帮助
【问题讨论】:
-
[0-9]+8不是 8 位数字,而是 1 位或多位数字后跟 8。你想要[0-9]{8} -
"没有什么特别之处。你甚至不需要逃避它。