abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

dnes 17:00 | Nová verze

Po pěti měsících vývoje od vydání verze 250 byla vydána nová verze 251 správce systému a služeb systemd (GitHub, NEWS).

Ladislav Hagara | Komentářů: 1
dnes 15:44 | IT novinky

HP ve spolupráci se System76 představil 14" notebook HP Dev One s procesorem AMD Ryzen 7 PRO a předinstalovaným Pop!_OS Linuxem.

Ladislav Hagara | Komentářů: 4
dnes 15:00 | Nová verze

Byla vydána verze 1.61.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

Ladislav Hagara | Komentářů: 0
19.5. 00:33 | Zajímavý článek

Správce nástroje curl Daniel Stenberg na GitHubu průběžně vytváří svou novou knihu Uncurled, v níž shrnuje své dlouhodobé zkušenosti s údržbou open-source projektu: od odpozorovaných pouček po vtipné a ne až tak vtipné příklady e-mailů od uživatelů.

Fluttershy, yay! | Komentářů: 19
19.5. 00:22 | Nová verze

Byla vydána nová major verze 25.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Přehled novinek v příspěvku na blogu.

Ladislav Hagara | Komentářů: 3
19.5. 00:11 | Nová verze

Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript a TypeScript, bylo vydáno ve verzi 1.22. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
18.5. 18:22 | Nová verze

Společnost Red Hat oznámila vydání Red Hat Enterprise Linuxu (RHEL) 9.0. Vedle nových vlastností a oprav chyb přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 8
18.5. 14:00 | Komunita

Lars Knoll oznámil, že po 25 letech v ekosystému Qt, z toho 22 let pracující pro různé společnosti vlastnící Qt, odchází ze společnosti The Qt Company do malého norského startupu.

Ladislav Hagara | Komentářů: 7
18.5. 13:22 | Zajímavý projekt

Na Kickstarteru běží kampaň na podporu mini ITX desky Turing Pi 2 Cluster Computer. Vložením 4 výpočetních modulů, podporovány jsou Raspberry Pi 4, Turing RK1 a Nvidia Jetson, lze získat 4uzlový cluster. Cena desky je 219 dolarů.

Ladislav Hagara | Komentářů: 2
18.5. 10:00 | Pozvánky

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 198. brněnský sraz, který proběhne v pátek 20. května tradičně od 18 hodin v Pivovarské restauraci Moravia.

Ladislav Hagara | Komentářů: 2
Na sociálních sítích nebo jiných webových diskuzích vystupuji pod
 (62%)
 (15%)
 (23%)
Celkem 313 hlasů
 Komentářů: 26, poslední včera 15:03
Rozcestník


Dotaz: Hladové regexpy

6.1.2005 16:32 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Hladové regexpy
Přečteno: 119×
DD,

mám otázku ohledně Perlu. V jakém pořadí vyhodnocuje logickým NEBO spojený výraz? Příklad:
if ("te tea teta" =~ /(t|te).*/) {
	print $1;
} else {
	print "NE";
}
vrátí "t". Jaktože ale zde neplatí "hladové" pravidlo, kdy se Perl snaží vyhovět co nejširší odpovědi?

Druhá otázka. Je někde stanoveno, jakým směrem má vybírat při postupu? Myslím tím, jestliže kdybych seřadil ten regulární výraz od nejdelšího k nejkratšímu (te|t), tak jestlipak budu mít zaručeno, že se dříve najde "te"?

Snad jsem k pochopení :-)

Odpovědi

6.1.2005 16:41 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Hladové regexpy
Teda abych se vymáčk...

Potřebuji sestrojit regexp, který by mi našel nejdelší přefix pro určité slovo. Například pro slovo "vykopat" by hledal předpony "v, vy, vyko" a našel by tu nejdelší - vyko.

Jelikož by to šlo řešit regulárním automatem, tak by to snad mělo jít i řešit regulárním výrazem... :-)
6.1.2005 17:23 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Hladové regexpy
OR matchuje kdo první přijde, první mele.
6.1.2005 17:27 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Hladové regexpy
Další možnost je (v(y(ko)?)?), ale vnitřní skupiny by musely být nečíslované, aby se v tom vyznalo alespoň prase, což v perlu nevím z hlavy, ale je to v manu (proč sakra perl nemá v regulárních výrazech pojmenované skupiny jako python?).
6.1.2005 17:28 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Hladové regexpy
A přitom (e)grep se chová jinak :-(
$ echo "ahoj vole" | perl -e 'if (<> =~ /^(a|ah|aho|ahoj)/) {print "$1\n";}'
a
$ echo "ahoj vole" | grep -Eo '^(a|ah|aho|ahoj)'
ahoj
6.1.2005 17:34 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Hladové regexpy
Tak to je rána pod pás, myslel jsem, že je to tak všude...

Python, vim -- kdo první přijde.

sed -- nejdelší (bez -r i s ním).
6.1.2005 18:04 ivok
Rozbalit Rozbalit vše Re: Hladové regexpy
Ale muzete ho taky prinutit, aby se choval stejne :-)
[ivok@zero ivok]$ echo "ahoj vole" | grep -Po '(a|ah|aho|ahoj)'
a
6.1.2005 17:32 ivok
Rozbalit Rozbalit vše Re: Hladové regexpy
kousek z man perlre
Alternatives are tried from left to right, so the first alternative
found for which the entire expression matches, is the one that is cho-
sen. This means that alternatives are not necessarily greedy. For exam-
ple: when matching "foo|foot" against "barefoot", only the "foo" part
will match, as that is the first alternative tried, and it successfully
matches the target string. (This might not seem important, but it is
important when you are capturing matched text using parentheses.)
experimenátlní potvrzení :-)

[ivok@zero ivok]$ perl -e 'print "$1\n" if ("te tea teta" =~ /(te|t)/)'
te
[ivok@zero ivok]$ perl -e 'print "$1\n" if ("te tea teta" =~ /(t|te)/)'
t
takže: ano, není to greedy, a ano, máte zaručeno, že se matchuje v alternativách zleva doprava. aspoň v té verzi perlu, co tu mám já (5.8.5) :-)

Založit nové vláknoNahoru

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

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.