Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: pepazdepa 07. 07. 2011, 10:54:44

Název: Podivná tečka v regulárním výrazu
Přispěvatel: pepazdepa 07. 07. 2011, 10:54:44
zdar,

lamu si hlavu na timto... nejak nechapu funkci te tecky :/

$ echo "c1111jfljdlfja" | sed -re 's/([0-9.]+).*/\1/'
c1111
$ echo "1111aaa-jfljdlfja" | sed -re 's/([0-9.]+).*/\1/'
1111
Název: Re: podivna tecka v mnozine regularnich vyrazu
Přispěvatel: kmarty 07. 07. 2011, 11:09:36
Citace
Within POSIX bracket expressions, the dot character matches a literal dot. For example, a.c matches "abc", etc., but [a.c] matches only "a", ".", or "c".
Zdroj: http://en.wikipedia.org/wiki/Regular_expression

A protoze se to tak chova i v realu, tak bych tomu i veril.
Název: Re: podivna tecka v mnozine regularnich vyrazu
Přispěvatel: lscpu 07. 07. 2011, 11:10:42
echo "c1.111jfljdlfja" | sed -re 's/([0-9.]+).*/\1/'
c1.111
Název: Re: podivna tecka v mnozine regularnich vyrazu
Přispěvatel: designerrr 07. 07. 2011, 12:35:31
Citace
Within POSIX bracket expressions, the dot character matches a literal dot. For example, a.c matches "abc", etc., but [a.c] matches only "a", ".", or "c".
Zdroj: http://en.wikipedia.org/wiki/Regular_expression

A protoze se to tak chova i v realu, tak bych tomu i veril.

Ale v ramci mnoziny moznych znaku to nema tenhle specialni vyznam, ale jako normalni tecka.
Název: Re: podivna tecka v mnozine regularnich vyrazu
Přispěvatel: designerrr 07. 07. 2011, 12:37:03
Citace
Within POSIX bracket expressions, the dot character matches a literal dot. For example, a.c matches "abc", etc., but [a.c] matches only "a", ".", or "c".
Zdroj: http://en.wikipedia.org/wiki/Regular_expression

A protoze se to tak chova i v realu, tak bych tomu i veril.

Ale v ramci mnoziny moznych znaku to nema tenhle specialni vyznam, ale jako normalni tecka.

Jo sorry, to tam je taky, sem si nevsiml.  ;)
Název: Re: Podivná tečka v regulárním výrazu
Přispěvatel: sadfgsdfg 07. 07. 2011, 13:12:57
$ echo "c1111jfljdlfja" | sed -re 's/([0-9.]+).*/\1/'
c1111
Normalni tecka, nikoliv cokoliv, aby to matchlo aj desetinou tecku. Neboli ten vyraz zameni prvni vyskyt cisla o minimalne jednom znaku 0-9 nebo '.' (cokoliv z toho) plus k tomu vsechny nasledujici znaky za tu prvni cast. Proto tam zustava na zacatku to 'c', protoze to neni soucasti matche, a proto to nevstupuje do substituce


$ echo "1111aaa-jfljdlfja" | sed -re 's/([0-9.]+).*/\1/'
1111
Tady akorat neni tecka k matchnuti.