微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

perl – 如何通过模式匹配提取单词?

#!/usr/bin/perl

use strict;
use warnings;
my $string = "praveen is a good boy";
my @try = split(/([a,e,i,o,u]).*\1/,$string);
print "@try\n";

我试图在给定的字符串中打印包含2个相邻元音的所有单词.
o / p:必须是“praveen”和“good”.

我尝试使用否定exp [^]来分割并仅给出2个相邻的元音.

解决方法

Perl函数拆分不适合查找匹配列表.相反,我建议使用正则表达式修饰符g.要处理所有匹配项,您可以循环使用例如虽然,或者您可以一次性分配匹配列表.

以下示例应匹配包含两个相邻元音的字符串中的所有单词:

my $string = "praveen is a good boy"; 
while ( $string =~ /(\w*[aeIoU]{2}\w*)/g ) { 
  print "$1\n" 
}

输出

praveen
good

你也可以这样做:

my @matches = ( $string =~ /\w*[aeIoU]{2}\w*/g );

并处理结果类似于您在OP中处理@try的方式.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐