Podivná tečka v regulárním výrazu

pepazdepa

Podivná tečka v regulárním výrazu
« kdy: 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
« Poslední změna: 07. 07. 2011, 11:22:48 od Petr Krčmář »


kmarty

  • ***
  • 186
    • Zobrazit profil
Re: podivna tecka v mnozine regularnich vyrazu
« Odpověď #1 kdy: 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.

lscpu

Re: podivna tecka v mnozine regularnich vyrazu
« Odpověď #2 kdy: 07. 07. 2011, 11:10:42 »
echo "c1.111jfljdlfja" | sed -re 's/([0-9.]+).*/\1/'
c1.111

designerrr

Re: podivna tecka v mnozine regularnich vyrazu
« Odpověď #3 kdy: 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.

designerrr

Re: podivna tecka v mnozine regularnich vyrazu
« Odpověď #4 kdy: 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.  ;)


sadfgsdfg

Re: Podivná tečka v regulárním výrazu
« Odpověď #5 kdy: 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.