首页 > 解决方案 > 如何在 perl 中搜索和替换字符串中的非字符?

问题描述

我有以下格式数据

$line1 = violation:start:CLK:a1.ID:end:a2.VALUE[22:0]:CLK1
$line2 = violation:start:CLK2:b1.ID[23:45]:end:b2.VALUE[2:03]:CLK3

那么,我如何搜索和替换 [\d+:\d+] 为 [\d+#\d+]

例如:[22:0] 到 [22#0]

请帮我!

标签: regexperl

解决方案


my $line1 = 'violation:start:CLK:a1.ID:end:a2.VALUE[22:0]:CLK1';
my $line2 = 'violation:start:CLK2:b1.ID[23:45]:end:b2.VALUE[2:03]:CLK3';
for ($line1, $line2) {
    s/\[ (\d+) : (\d+) \]/[$1#$2]/gmsx;
}
print "$line1\n$line2\n";
__END__
violation:start:CLK:a1.ID:end:a2.VALUE[22#0]:CLK1
violation:start:CLK2:b1.ID[23#45]:end:b2.VALUE[2#03]:CLK3

推荐阅读