Portál AbcLinuxu, 28. července 2021 12:35


Dotaz: Regularni vyraz - podminene nahrazeni

1.8.2005 15:45 Jira
Regularni vyraz - podminene nahrazeni
Přečteno: 57×
Odpovědět | Admin
Je mozne v sedu / vimu napsat regularni vyraz, ktery provede v jednom kroku nahrazeni retezcem, jehoz hodnota zavisi na nalezenem vyrazu; tj. neco jako

s/pes|kocka/Alik|Micka/g

coz ovsem nefunguje?

Diky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.8.2005 15:55 mr.pohoda
Rozbalit Rozbalit vše Re: Regularni vyraz - podminene nahrazeni
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co treba napsat if-else, a v kazde vetvi jiny sed?
1.8.2005 15:56 mr.pohoda
Rozbalit Rozbalit vše Re: Regularni vyraz - podminene nahrazeni
Odpovědět | | Sbalit | Link | Blokovat | Admin
omlouvám se za urychlenou reakci, samozrejme jsem prehledl, ze to chcete v jednom kroku...
1.8.2005 16:07 #Tom
Rozbalit Rozbalit vše Re: Regularni vyraz - podminene nahrazeni
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ve vimu zkuste: %s/pes/Alák/g|s/kočka/Micka/g
1.8.2005 16:24 Jira
Rozbalit Rozbalit vše Re: Regularni vyraz - podminene nahrazeni
Bezva, diky :-) V sedu jsem zatim neprisel na nic krome pipy do druheho sedu :-( Jeste jednou dik.
1.8.2005 16:27 Jira
Rozbalit Rozbalit vše Re: Regularni vyraz - podminene nahrazeni
Procez mi ted doslo, ze ve vimu to je asi interne taky pipe do druheho vimu, coz ... :-) :-) :-)
1.8.2005 16:32 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Regularni vyraz - podminene nahrazeni
?? Ve vimu jsou to dva příkazy, dva příkazy v sedu oddělíš středníkem.

s/pes/alík/; s/kočka/micka/
1.8.2005 16:38 Jira
Rozbalit Rozbalit vše Re: Regularni vyraz - podminene nahrazeni
Hm, diky, prave ze jsem si taky vsimnul, ze jsem jaksi nepozorovane slevil z puvodniho pozadavku, aby to byl jeden regularni vyraz ;-)
1.8.2005 17:11 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Regularni vyraz - podminene nahrazeni
V jednom výrazu to IMHO nejde, resp. nejde to zadat sedu. Automat rozpoznávající pes|kočka bude samozřejmě v jiném stavu když narazí na pes a v jiném když narazí na kočka, takže když si to napíšeš sám, tak to v jednom průchodu půjde:
$ cat pes-kocka.l 
%option main

%%

pes    fputs("alik", yyout);
kocka  fputs("micka", yyout);

$ flex pes-kocka.l 
$ gcc -Wall lex.yy.c 
lex.yy.c:1020: warning: ‘yyunput’ defined but not used
$ ./a.out 
kocka
micka
pes
alik
papousek
papousek

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.