vystup: pouze text odpovidajici regularnimu vyrazu

Michal Kubecek mike na oksoftware.cz
Úterý Červen 11 13:49:34 CEST 2002


On Tue, Jun 11, 2002 at 09:32:59AM +0000, Ivo Kocvara wrote:
> > kolega se s tim trapi a mne taky nic nenapada... Kterak z textu
> > vypsat jen to, co odpovida regularnimu vyrazu ? Zda se mi to
> > tak primitivni zadani a prece na to nemuzeme prijit :-( Asi
> > nam neco zasadniho uniklo :-)
> 
> perl -n -e 'print "$1\n" if /(reg.vyraz)/' <soubor.txt
> 
> Jestli vam nevadi perl :-)

Jsou i větší kladiva než Perl, třeba starý dobrý (f)lex:     :-)


---------------- cut here
%{
#include <stdio.h>
%}

LBL     [[:alpha:]]([[:alnum:]-]*[[:alnum:]])?
NM      [[:alnum:]_.-]+
ADDR    {NM}\@{LBL}(\.{LBL})*

%%

{ADDR}  fwrite(yytext, yyleng, 1, stdout); putchar('\n');
.       ;
\n      ;

%%
---------------- cut here

Pro překlad stačí

  flex addr.flex
  gcc -O2 -s -o parser lex.yy.c -lfl

                                                   Michal Kubeček


Další informace o konferenci Linux