Perl 正则表达式匹配计数
最近做实验时遇到这样的需求:统计某一 term 在 doc-u-ment 中的 TF (term fre-quen-cy),即词频。借助 perl 完成,自然想到构造正则表达式进行匹配计数。目前可以找到的匹配计数方式有好几种: 假定 方案一: #method 1: my $count = 0; $count++ while ($string =~ m/$regex/g); 考虑到默认只返回第一次匹配,所以 方案二: #method 2: my $count = ($string =~ s/$regex/$regex/g); 这里通过自身替换来获得最终替换的次数,也等于匹配计数。 方案三: #method 3: $count = () = $string =~ /$regex/g; 这里有一点小 trick , 相比之下,方案一最为直观,缺点是用到了两行代码。方案三最为隐晦,却是最为 perl 程序员欢迎的 terse style 。刚入门时会觉得方案一更好,但是日后会发现方案三更好。这也是为什么外界将 perl 评为最生涩语言的原因吧。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |