Regex 如何对所有超过6个字符且没有任何元音字母的单词进行grep?

Regex 如何对所有超过6个字符且没有任何元音字母的单词进行grep?,regex,grep,Regex,Grep,我发现这可以指定一个特定的长度 grep-o-w'\w{6,10}数据 但是我想查找所有包含6个或6个以上字母且没有任何元音字母的单词。grep方法查找所有包含6个或6个以上字母的单词,元音除外: 数据文件内容: some text with vowels and CNN_tvs chars swwwdfrgcc done ... 输出: CNN_tvs swwwdfrgcc \b-指向单词边界 b-df-hj-np-tv-z-辅音字母的范围 备选perl方法: perl -nle 'pri

我发现这可以指定一个特定的长度 grep-o-w'\w{6,10}数据

但是我想查找所有包含6个或6个以上字母且没有任何元音字母的单词。

grep方法查找所有包含6个或6个以上字母的单词,元音除外:

数据文件内容:

some text with vowels and CNN_tvs chars swwwdfrgcc done ...
输出:

CNN_tvs
swwwdfrgcc
\b-指向单词边界

b-df-hj-np-tv-z-辅音字母的范围

备选perl方法:

perl -nle 'print for /\b[b-df-hj-np-tv-z0-9_]{6,}\b/gi' data

您可以将所有需求合并到一个正则表达式中

^?i[^aeiouy]{6,10}$

说明:^开头的意思是不能有 图案之前的任何东西。字符串将显示为以模式开头。 ?我的意思是不区分大小写。[^aeiouy]是不包含 包含的元音不是^{6,10}是{minlenght,maxlenght$的意思 比赛结束后不会再有什么了


在grep中使用它。

常规grep通常既不接受Perl转义码\w,也不接受扩展正则表达式重复运算符{6,10}。使用POSIX grep,您可以说grep-o-w'[[:alnum:]\{6,10}'数据用于大致预期的结果。如果您正在检查的是威尔士词典,只需打印每一行即可:-除非您的版本实现了非标准-P选项,否则不能将Perl扩展与grep一起使用。它还匹配6个或更多非单词字符。@l'l,不,E是一个好选项,它将涵盖GNU和BSD实现已确认的工作使用grep-BSD-grep 2.5.1-FreeBSD和grep-GNU-grep 2.20+谢谢。它很有效。有人能解释一下“\b”的确切含义吗?
perl -nle 'print for /\b[b-df-hj-np-tv-z0-9_]{6,}\b/gi' data