2011-02-03 6 views
1
レクサーに

入力FLEX I午前混乱

abc gef4 44jdjd ghghg 
x 
ererete 
xyzzz 
55k 
hello wold 
33 

私のルール

rule1 [0-9]+[a-zA-Z]+ 
rule2 [x-z] 
rule3 .* 

{ルール1} { のprintf( "%sのを\ n"、yytext)。 }

{rule2} { printf( "%s \ n"、yytext); }

{ルール3} { //プリントは何も }

出力: -

x 



55k 

私は出力を理解することはできませんか?誰かが私を助けてくれますか?

+2

iamも混乱しています... –

+0

多くの文字列がrule3と一致しています。なぜですか?なぜrule3は単語44jdjdとマッチしましたか?ルール1が最初に表示されるので、ルール1と一致させる必要がありますか? – user574183

答えて

3

入力の最初の文字は、rule1とrule2のどちらにも一致しません。代わりに、rule3は行末まで入力を食べます。同じことがライン3、4、6で発生し、7あなたはおそらくあまり貪欲ルール3、スペースを消費しない、すなわち1希望:

[^ \t\n]*   /* Do nothing */ 

そして、ルール1によって発見されている44jdjdを。

+0

これで不要な単語も印刷されるようになりました。私はそれらを食べるために正規表現を書く必要があると思います。どのようにして1つのルールに2つの正規表現を入れることができますか?これは仕事のルールではない3 [^ \ t \ n] | [a-z-Z] * – user574183