Evropská komise naléhavě vyzvala členské státy EU, aby kvůli ochraně nezletilých na internetu urychlily zavádění unijní aplikace pro ověřování věku a zajistily její dostupnost do konce roku. Členské státy mohou zavést aplikaci EU pro ověřování věku jako samostatnou aplikaci nebo ji integrovat do takzvané evropské peněženky digitální identity.
Richard Biener oznámil vydání verze 16.1 (16.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 16. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Zulip Server z open source komunikační platformy Zulip (Wikipedie, GitHub) byl vydán ve verzi 12.0. Přehled novinek v příspěvku na blogu.
Před 30 lety, tj. v úterý 30. dubna 1996, byl spuštěn Seznam.cz.
Byly zpracovány a zveřejněny všechny videozáznamy, které stojí za zveřejnění, z konference FOSDEM 2026.
Od úterý 28. dubna musí nově uváděné notebooky v Evropské unii podporovat nabíjení přes USB-C. Jednotná nabíječka byla schválena Evropským parlamentem v říjnu 2022.
Byly publikovány informace o kritické zranitelnosti CVE-2026-31431 pojmenované Copy Fail v Linuxu, konkrétně v kryptografii (AF_ALG). Běžný uživatel může získat práva roota (lokální eskalaci práv). Na všech distribucích Linuxu vydaných od roku 2017. Pomocí 732bajtového skriptu. V upstreamu je již opraveno. Zranitelnost byla nalezena pomocí AI Xint Code.
Textový editor Zed dospěl do verze 1.0. Představení v příspěvku na blogu.
Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.
VNC server wayvnc pro Wayland kompozitory postavené nad wlroots - ne GNOME, KDE nebo Weston - byl vydán ve verzi 0.10.0. Vydána byla také verze 1.0.0 související knihovny neatvnc.
Regulární výraz (regular expression) je řetězec popisující celou množinu řetězců, neboli předpis pro podobné řetězce. Regulární výrazy programátorovi usnadní složitější prohledávání řetězců např. při kontrole vstupů nebo při parsování kódu (HTML, konfigurační soubory). Pokud chce uživatel v textu vyhledat nějaký řetězec, který nezná přesně, může zadat regulární výraz. Program pak nalezne všechny části textu, které danému výrazu odpovídají. Regulární výrazy v Pythonu pracují podobně jako zástupné znaky * a ? v shellu (místo * je možné vložit jakékoliv množství znaků, místo ? se vkládá jen jeden znak), mají však komplexnější využití.
Ve verzi 1.5 byla do Pythonu přidána podpora regulárních výrazů ve stylu Perl. Ta je zajišťována modulem re. V předchozích verzích byly regulární výrazy dostupné také, ale jednalo se o výrazy v emacsovém stylu (modul regex). Vzor regulárních výrazů je vždy zkompilován do byte kódu, který je poté zpracován srovnávacím kódem napsaným v jazyce C.
Vzhledem k tomu, že regulární výrazy často využívají speciální znaky a zpětné lomítko, je vhodné je zapisovat jako tzv. raw řetězce (r'\n' == '\\n').
Vzory regulárních výrazů se skládají z obyčejných znaků, které mají normální význam (např. "jméno", "Petr" atp.), a tzv. metaznaků. Jedná se o znaky, které mají speciální význam:
Potřebujete-li vyhledávat metaznak v jeho původním významu, můžete jej zpřístupnit přes zpětné lomítko (escapování).
Dále pak regulární výrazy v Pythonu umožňují pracovat se skupinami a obsahují speciálně předdefinované skupiny znaků - obojí si ukážeme v příštím díle.
Nutnou dávku teorie máme za sebou. Ukažme si nejdříve, jak se vlastně s regulárními výrazy pracuje:
>>> import re >>> retezec1 = "abcde" >>> retezec2 = "123" >>> vzor = re.compile(r"a+") >>> vzor.match(retezec1) <_sre.SRE_Match object at 0xb7bdf4b8> # pri nalezeni shody se vraci objekt Match, se kterym lze dale pracovat >>> vzor.match(retezec2) # v pripade,ze nebyla nalezena shoda, vraci None >>> re.match(r"[1-9]+?", retezec2) <_sre.SRE_Match object at 0xb7bdf560>
Jak je vidět, můžeme vzor nejdříve sami zkompilovat, což je vhodné při opakovaném porovnávání. V tomto případě voláme metody vráceného objektu. Funkce compile() může obsahovat ještě kombinaci parametrů, které se oddělují bitovým or ("|"):
Můžeme také volat funkci modulu re, které předáme pouze nezkompilovaný "raw string". Funkci je pak možné předávat stejné parametry jako výše. Modul obsahuje více funkcí (objekt zkompilovaného vzoru pak více metod); pro začátek se však omezíme pouze na match(). Na ostatní se zaměříme v dalších dílech.
Na závěr si předveďme několik příkladů, aby bylo jasně vidět, jak se zapisují vzory regulárních výrazů.
re.match(r"a+", retezec) # vyhleda 1 a vice znaku a
re.match(r"a*", retezec) # vyhleda 0 a vice znaku a
re.match(r"o?kov", retezec) # vyhleda okov nebo kov
re.match(r"tel(efon)?$", retezec)
# vyhleda tel nebo telefon na konci retezce
re.match(r"^[0-9]{2}$", retezec)
# vyhleda dvouciferne desitkove cislo (00 az 99),
#+ktere je jedinym obsahem retezce
re.match(r"[0-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]+", retezec)
# vyhledava hexadecimalni cisla
re.match(r"(19|20)[0-9]{2}", retezec)
# vyhleda letopocet mezi roky 1900 a 2099
re.match(r"a\+b", retezec) # vyhleda 'a+b'
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
re.match(r"(19|20)[0-9]{2}", retezec)
# vyhleda letopocet mezi roky 1900 a 2050
hmm, možno tak v pythone
) Všade inde by bolo treba opraviť buď prvý riadok
m/(?:19\d{2})|(?:20[0-4]\d)|2050/
alebo druhý riadok# vyhleda letopocet mezi roky 1900 a 2099 (vrátane)

m/^(?:0|(?!0)[0-9a-f]+)$/i
die "Zadany retezec neobsahuje letopocet od 1900 do 2099.\n" if $retezec !~ /(19|20)[0-9]{2}/;
?
#!/usr/bin/env python
import re
year_str = '1801d'
if not re.match('(19|20)[0-9]{2}', year_str):
raise SystemExit, 'Chyba formatu letopoctu'
nebo takhle
year_str = '1801d'
try:
rok = int(year_str)
except ValueError:
raise SystemExit, '"%s" nelze prevest na cislo.' %year_str
if rok < 1900 or rok > 2099:
raise SystemExit, 'Rok %d je mimo interval 1900 a 2099.' %rok
die prostě ukončí interpreter Perlu, takže v Pythonu by tomu odpovídalo exit. Výjimka se dá pomocí except zachytit a zpracovat ...
<rejp>