/([^aeiou])([aeiou])\1\2/
1
2
3
4
5
6
7
8
9
10
11
[^aeiou]* # 0 oder mehr Konsonanten
([aeiou]) # 1. Vokal
[^aeiou]* # 0 oder mehr Konsonanten
([^\1]) # 2. Vokal, aber nicht nochmals der 1. Vokal
[^aeiou]* # 0 oder mehr Konsonanten
([^\1\2]) # 3. Vokal, aber nicht nochmals der 1.,2. Vokal
[^aeiou]* # 0 oder mehr Konsonanten
([^\1\2\3]) # 4. Vokal, aber nicht nochmals der 1.,2.,3, Vokal
[^aeiou]* # 0 oder mehr Konsonanten
([^\1\2\3\4]) # 5. Vokal, aber nicht nochmals der 1.,2.,3.,4. Vokal
[^aeiou]* # 0 oder mehr Konsonanten
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
for (<DATA>) { print if /^ (?=[^a]*a[^a]*\z) (?=[^e]*e[^e]*\z) (?=[^i]*i[^i]*\z) (?=[^o]*o[^o]*\z) (?=[^u]*u[^u]*\z) /x; } __DATA__ Hallo Barionen Barionenwurst Barionenrakete Mausetoit
1 2 3
for my $word (@words) { say $word if (scalar(grep { my $count = () = $word =~ /$_/; $count == 1 } qw(a e i o u)) == 5); }