首页 > 解决方案 > Bash Regex:搜索最多 3 个连续的元音

问题描述

我正在尝试搜索最多 3 个连续的元音

我试过了

grep -E "([AEIOUaeiou]{3})" gpl3.txt

并得到了结果

在此处输入图像描述

我想要的是不要得到你在第一行输出中看到的( aaaaaaaaa )。所有其他输出都是正确的。

任何帮助表示赞赏

标签: regexlinuxbashgrep

解决方案


如果你想避免-P选项和前瞻,你可以使用类似下面的东西。

grep -iE '(^|[^aeiou])[aeiou]{3}([^aeiou]|$)' gpl3.txt

它只是匹配

  • 行首或非元音
  • 三个元音
  • 非元音或行尾

试运行:

IT070137 ~/tmp $ cat gpl3.txt
aaaaaaaaaaaaaaa
asdaiosd
aa
aaa
aaaa
this is a righteous queue
IT070137 ~/tmp $ grep -E '(^|[^aeiou])[aeiou]{3}([^aeiou]|$)' gpl3.txt
asdaiosd
aaa
this is a righteous queue

推荐阅读