2011-06-05 74 views
0

如何匹配aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab其中a的个数应该最小为10?简单的正则表达式问题

我的意思是,我知道是这样的:

[a][a][a][a][a][a][a][a][a][a][a][a][a]a*b 

但是,必须有一个更好的优雅方法,其中,如果是我的一个公司的数最小值成为说100 ..

这是什么?我想匹配(A^N)b类的事情,其中​​n可以是任何东西

编辑:

我忘了说,这是使用lex和yacc,其中有法回做..一个令牌给yacc。

%{ 
#include "y.tab.h" 
%} 
%% 
aaaaaaaaaa[a]*b {return ok;} 
\n {return '\n';} 
. {return 0;} 
%% 
+0

你使用perl语法为你的正则表达式? – Ali1S232 2011-06-05 07:28:24

+0

我正在做这个在knoppix 4.0中使用lex和yacc作为编程练习练习.... – footy 2011-06-05 07:41:26

回答

7

尝试

a{10,} 

它说a 10次以上。

grep -E "a{10,}" filename 

匹配aaaaaaaaaaaaaaaaaaaaaaaaab但不是aaaaaaaaab

+0

这不工作在lex .... :(我试过..请问c修改后的问题 – footy 2011-06-05 07:47:41

-1

使用此格式:a^na*b并用您想要的任何数字替换n。

+1

对我来说没有香蕉:'' $ egrep的 '一^ 3A * b' << - EOF \t> AB \t> AAB \t> AAAB \t> AAAAB \t> eof' – corlettk 2011-06-05 07:48:25

1

褴褛,

[警告:这回答完毕胡说八道!]

(如果你的意思是足球,我们swarn敌人;-)

嗯, ...这不是我所知道的那样,使用由sed,grep,nawk和类似支持的“标准”正则表达式语法......甚至没有egrep ......据我所知, a{10,*}语法(这正是你所渴望的)直到Perl rewr才出现注意所有关于正则表达式功能的书籍......并且(不要引用我对此)直到第5版才会发生这种情况。

所以是的,如果你坚持使用nawk ,那么这就是aaaaaaaaardaardvarking hardway的家伙。抱歉。

干杯。基思。


编辑:

嗯...我似乎是奇男子,在这里...也许EVERONE-别人的 “标准操作环境(S)” 已更新为“标准工具“,以识别后来的正则表达式语法扩展... Sooo ...嗯...我测试了我的(三岁)cygwin执行egrep ...它惊讶我实际工作! !

[email protected] ~ 
$ egrep 'a{3,}b' <<-eof 
> ab 
> aab 
> aaab 
> aaaab 
> eof 
aaab 
aaaab 

所以我错了都结束了......看起来像“新”{min,[max]}语法得到相当好的支持,并且我变老了。叹。

干杯。基思。

+0

是的我的意思是足球只:d,我使用lex和yacc!在这里解决这个问题......但是你说的方法给了knnopix 4.0无法识别的规则错误 – footy 2011-06-05 07:40:23