我需要一个与五个单词完全匹配的egrep表达式。句子以大写字母开头,以标点符号结尾。我需要使用:alpha:
,:upper:
和:punct:
类。
我有:
[[:upper:]][a-z]* [[:alpha:]]+ [[:alpha:]]+ [[:alpha:]]+ [[:alpha:]]+[[:punct:]]
但是这也找到了在其中有名字的句子,然后是更多的单词,例如
My friend Frank ate a big sandwich.
我也不能使用-w
。
答案 0 :(得分:0)
如果您按如下方式锚定解决方案,它将不再与评论中的示例句子匹配:
grep -E '^[[:upper:]][a-z]* [[:alpha:]]+ [[:alpha:]]+ [[:alpha:]]+ [[:alpha:]]+[[:punct:]]$'
你可以把它缩短一点,因为有一个重复的模式:
grep -E '^[[:upper:]][a-z]*( [[:alpha:]]+){4}[[:punct:]]$'