我有这个样本数据:
1
2a
12
23a
使用正则表达式,我想用单个数字替换这种格式的数据:
01
02a
12
23a
任何其他建议也将是一个很大的帮助
答案 0 :(得分:1)
您可以将this regex与多行m
标志一起使用:
(?<!\d)(\d)(?=[a-zA-Z]|$)
然后替换为0\1
。
my $str = 'your data'
my $regex = qr/(?<!\d)(\d)(?=[a-zA-Z]|$)/mp;
my $subst = '0\\1';
my $result = $str =~ s/$regex/$subst/rg;
(?<!\d)
是负面的背后隐藏。仅当前一个字符不是数字(\d)
是第一组,它匹配一位数(?=[a-zA-Z]|$)
)或已达到行结束(<{1}}),则[a-zA-Z]
结束匹配
$
是第一个以零开头的组(数字)