替换多行perl变量中的固定位置
perl变量具有多行赋值替换多行perl变量中的固定位置,perl,variables,replace,line,Perl,Variables,Replace,Line,perl变量具有多行赋值 2100010000 2200010000 2300010000 3100010001 3200010001 我想用另一个值(如0004)替换每行的位置3到6 2100040000 2200040000 2300040000 3100040001 3200040001 我不想遍历perl变量中的每一行 您可以使用m标志对多行字符串执行正则表达式替换。要执行所有此类更换,请使用g标志。在多行上下文中,^字符将匹配
2100010000
2200010000
2300010000
3100010001
3200010001
我想用另一个值(如0004)替换每行的位置3到6
2100040000
2200040000
2300040000
3100040001
3200040001
我不想遍历perl变量中的每一行 您可以使用
m
标志对多行字符串执行正则表达式替换。要执行所有此类更换,请使用g
标志。在多行上下文中,^
字符将匹配多行字符串每行的开头
$numbers=~s^(\d{2})(\d{4})|$1$replacement | mg代码>
表示查找以2位数字开始,后跟4位数字和
将其替换为$1
中捕获的前两位数字,然后是变量$replacement
中的字符串
对这个话题作一个温和的介绍
#!/usr/bin/env perl
use warnings;
use strict;
my $numbers = <<EONUMBERS;
2100010000
2200010000
2300010000
3100010001
3200010001
EONUMBERS
my $replacement = '0004';
print "before:\n$numbers";
$numbers =~ s|^(\d{2})(\d{4})|$1$replacement|mg;
print "after:\n$numbers";
before:
2100010000
2200010000
2300010000
3100010001
3200010001
after:
2100040000
2200040000
2300040000
3100040001
3200040001