私は偶然に次のようなegrep表現を見つけました:
egrep '^([^aieou]*[aieou]){5,7}[^aieou]*$' /usr/share/dict/words
このページでは:http://matt.might.net/articles/sculpting-text
この式は5〜7個のコレクションを含む単語を見つける必要があります。
行の先頭から最初の^の意味を理解します。 2番目の^は、aieouの後のすべての文字数と5〜7の間のaeiouの1つを無効にします。しかし、最初の表現と最後の表現がどんなものか理解できません。[^aieou]
答え1
[^aieou]*
0個以上の子音()、5〜7個の母音(([aieou]){5,7}
)、0個以上の子音()を探します[^aieou]*
。完全正規表現は行の先頭(^
)と終わり()に固定されています。$
はい
$ egrep '^([^aieou]*[aieou]){5,7}[^aieou]*$' \
/usr/share/dict/words | head -10
abacinate
abacination
abacterial
abaisance
abalation
abalienate
abalienated
abalienating
abalienation
abandonable
詳細
そのため、最初の単語と一致するとき、最初のabacinate
文字aの左側にゼロの子音があるので、その部分を一致させます。
子音がゼロ以上の母音が左側および/または右側にさらに見つかるため、これらの場合も一致します。 5から7を見つけると一致するものです。