线端如何影响正则表达式?
发布时间:2020-12-13 22:56:19 所属栏目:百科 来源:网络整理
导读:以下内容对我来说似乎相同,但它们给出了不同的结果: $perl -e ' my $pop = 298444215; $pop =~ s/(?=d)(?=(ddd)+$)/,/g; print $pop,"n"' 298,444,215 $perl -e ' my $pop = 298444215; $pop =~ s/(?=d)(?=(ddd)+)/,/g; print $pop,"n"' 2,9,8,4,
以下内容对我来说似乎相同,但它们给出了不同的结果:
$perl -e ' my $pop = 298444215; $pop =~ s/(?<=d)(?=(ddd)+$)/,/g; print $pop,"n"' 298,444,215 $perl -e ' my $pop = 298444215; $pop =~ s/(?<=d)(?=(ddd)+)/,/g; print $pop,"n"' 2,9,8,4,215 我期待的结果是第一个(在逗号的正确位置放置一个逗号).
$确保在匹配的位置前面有三位数字.
这样匹配只会在那些位置(插入空格以便澄清): 3 3 v---v v---v 2 9 8 4 4 4 2 1 5 ^ ^ 其他位置不匹配,因为直到结束时3组中没有数字. 例如.这里不符合: 3 3 2 v---v v---v 2 9 8 4 4 4 2 1 5 ^ 因为有2组3然后它不能匹配行尾或另一组3位数. 但如果没有$,前瞻在更多位置匹配: 2 9 8 4 4 4 2 1 5 ^ 在这里,后视是满意的,前瞻也是如此,因为前面至少有一组3位数,是: 2 9 8 4 4 4 2 1 5 ^---^ 前瞻在这里很满意,不需要比这更好. 这当然意味着随后的每个其他位置也会匹配,直到匹配几乎结束: 2 9 8 4 4 4 2 1 5 ^ 在这里,它无法匹配,因为前面只有2位数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |