只用一个元音匹配单词

时间:2014-05-17 22:01:14

标签: regex perl

我想只匹配只有一个元音的字符串。

我尝试了这段代码,它可以运行,但它也匹配那些没有元音的字符串(例如hshskskslslsl),我只需要字符串只有一个元音

if ( $string !~ /\*w[aeiou]\w*[aeiou]\W*/ ) {
   print $string;
}

2 个答案:

答案 0 :(得分:2)

您可以使用tr///来计算字符串中字母的出现次数。

这样的事可能

use strict;
use warnings;

for my $string ( qw/ a fare is paid for every cab /) {

  if ( $string =~ tr/aeiuoAEIOU// == 1 ) {
     print $string, "\n";
  }

}

<强>输出

a
is
for
cab

答案 1 :(得分:1)

简单,至少一个元音:

if ($string =~ /[aeiou]/i) {
   print $string;
}

正好是一个元音:

if ($string =~ /^[^aeiou]*[aeiou][^aeiou]*$/i) {
   print $string;
}
相关问题