假设我有一个表达式,例如egrep "^b([aeuio])\1$"
这将匹配一个3字母的单词,以b开头,然后是同一个誓言。如何否定标记的子表达式,以便第一个誓言后跟任何不是第一个誓言的字符。
答案 0 :(得分:1)
这样第一个元音后跟任何不是的元素 第一个元音
使用以下方法:
echo "bay" | grep -P '^b([aeuio])(?!\1).$'
输出(作为匹配项):
bay
-P
选项,允许Perl兼容常规表达
(?!\1)
- 前瞻性否定断言,确保第一个元音不会自行跟随
虽然echo "baa" | grep -P '^b([aeuio])(?!\1).$'
不会给出匹配
答案 1 :(得分:0)
另一种方法是标准的grep
匹配过程。通过grep
列出您想要grep的内容,通过管道传输以通过grep -v
过滤您希望错过的内容。结果将是:
egrep "^b([aeuio]).$" | egrep -v "^b([aeuio])\1$"