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 00:11 | Nová verze

    Jonathan Thomas oznámil vydání nové verze 4.1 video editoru OpenShot (Wikipedie). Zdrojové kódy OpenShotu jsou k dispozici na GitHubu. Ke stažení je i balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit.

    Ladislav Hagara | Komentářů: 0
    včera 23:33 | Zajímavý článek

    Při běžné migraci virtuálního stroje mezi hypervizory se jeho MAC adresa přesune na jiný leaf switch. EVPN tuto změnu distribuuje pomocí BGP Type-2 route a MAC mobility sequence number. Problém nastává, pokud útočník podvrhne zdrojovou MAC adresu jiného zařízení. Leaf může změnu interpretovat jako legitimní přesun MAC a rozšířit ji přes BGP do celé fabric. Výsledkem může být přesměrování provozu určeného původnímu zařízení. Autor článku rozebírá možnosti detekce pomocí sledování MAC moves, BGP route reflektorů a kontroly na přístupové vrstvě.

    vencour | Komentářů: 0
    včera 15:11 | Nová verze

    Vývojáři desktopového prostředí Enlightenment (Wikipedie) a souvisejících knihoven Enlightenment Foundation Libraries (EFL) vydali nové verze. Enlightenment byl vydán ve verzi 0.28.0 a Enlightenment Foundation Libraries ve verzi 1.29.

    Ladislav Hagara | Komentářů: 3
    včera 13:55 | Zajímavý článek

    Cloudflare zjistil, že některé odpovědi modelu GLM-5.3 obsahovaly části dat z předchozích požadavků jiných zákazníků. Příčinou byla kombinace chybné konfigurace a chyby v inference enginu SGLang. Model podporoval kontextové okno 1 048 576 tokenů, ale GPU KV cache pool měl kapacitu pouze 681 280 tokenů. Při překročení kapacity docházelo k nesprávnému zpracování odmítnutého požadavku. Decode část systému následně pracovala se starými

    … více »
    vencour | Komentářů: 0
    včera 13:00 | Zajímavý článek

    Vývojáři Knot Resolver vysvětlují, jak změnili rozhodování o tom, které DNS záznamy ponechat v cache a které odstranit. Článek obsahuje skutečná měření: devět hodin DNS provozu při 2 000 QPS, srovnání cache o velikosti 25 MB a 40 GB a také porovnání s BIND 9, kromě algoritmů obsahuje konkrétní doporučení pro konfiguraci a diagnostiku.

    vencour | Komentářů: 0
    30.10. 13:44 | IT novinky

    Největší kryptoměnová burza světa Binance se stala terčem útoku, při kterém podvodníci odcizili během několika minut kryptoměny v hodnotě přibližně 6,3 miliardy dolarů. Jedná se o největší kryptoměnovou krádež v historii, přibližně čtyřikrát větší než loňský útok na burzu Bybit. Binance se podařilo ve spolupráci s partnery zmrazit aspoň aktiva v hodnotě zhruba 3 miliard dolarů a slíbila, že veškeré ztráty pokryje z vlastních prostředků.

    Ladislav Hagara | Komentářů: 16
    30.10. 02:16 | Bezpečnostní upozornění

    Zranitelnost CVE-2026-98432 s CVSS 9.8 odhalila AI od společnosti Anthropic. Jedná se o kritickou chybu v implementaci MPTCP (multipath TCP). Debian vydal patche 16.10. a 22.10., ale např. Ubuntu je zatím bez opravy. Více informací na The Hacker News.

    Max | Komentářů: 20
    29.10. 23:22 | Zajímavý software

    Na Slovensku vznikla úplne nová rally hra, ktorá je zadarmo a funguje vo Windowse, Linuxe či na Macu. Greenie Rally má viac ako 50 tratí a vozidiel, šampionáty či turnaje. Má retro feeling a imituje automobilové hry z prelomu tisícročí. Vyskúšate prejsť všetky mapy na Škode 130RS?

    Stanislav Hoferek | Komentářů: 12
    29.10. 14:33 | Komunita

    Do základního systému NetBSD -current byl přidán nový editor atto jako alternativa k editorům vi a xedit.

    Ladislav Hagara | Komentářů: 1
    29.10. 14:11 | IT novinky

    Společnost System76 představila kompaktní 11litrový Thelio Prime Desktop. S procesorem AMD Ryzen 9000. S Pop!_OS 24.04 LTS s desktopovým prostředím COSMIC nebo Ubuntu 24.04 LTS.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (20%)
     (29%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2954 hlasů
     Komentářů: 34, poslední 26.10. 08:24
    Rozcestník

    Standardní knihovna pro Python - 8 (regulární výrazy 1)

    10. 4. 2007 | Jakub Matys | Programování | 12419×

    Regulární výrazy představují moderní, výkonnou a komplexní metodu pro prohledávání řetězců. Není divu, že mnoho jazyků práci s regulárními výrazy podporuje. Ani Python není výjimkou...

    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').

    Základní syntaxe regulárních výrazů

    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:

    • . - tečka - vyhledá jakýkoliv znak kromě přechodu na nový řádek.
    • ^ - vyhledá začátek řetězce.
    • $ - vyhledá konec řetězce.
    • [...] - vyhledá jeden ze znaků definovaných uvnitř hranatých závorek, např. r"[abcABC]" nebo r"[a-zA-Z]". Speciální znaky nemají uprostřed množiny svůj standardní význam.
    • [^...] - v daném místě se má vyskytovat jeden libovolný znak, vyjma znaků definovaných mezi závorkami.
    • | - A|B vyhledá A nebo B, kde A a B jsou regulární výrazy.
    • kvantifikátory - určují, kolikrát se smí předchozí znak opakovat.
      • * - vyhledá nulové nebo více opakování předcházejícího výrazu, vybere co nejvíce opakování.
      • + - vyhledá jedno nebo více opakování předcházejícího výrazu, vybere co nejvíce opakování.
      • ? - vyhledá nulové nebo jedno opakování předcházejícího výrazu.
      • *? - vyhledá nulové nebo více opakování výrazu, ale vybere co nejméně opakování.
      • +? - vyhledá jedno nebo více opakování výrazu, ale vybere co nejméně opakování.
      • ?? - vyhledá nulové nebo jedno opakování, přičemž vybere co nejméně opakování.
      • {m, n} - vyhledá opakování předcházejícího výrazu od m do n-krát, vybere co nejvíce opakování.
      • {m, n}? - vyhledá opakování předcházejícího výrazu od m do n-krát, vybere co nejméně opakování.

    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 ("|"):

    • I nebo IGNORECASE - nerozlišuje malá a velká písmena.
    • L nebo LOCALE - lokalizuje parametry \w, \W, \b a \B.
    • M nebo MULTILINE - ^ a $ se budou vztahovat na každý řádek řetězce, ne jen na jeho začátek a konec.
    • S nebo DOTALL - tečka (".") odpovídá všem znakům, včetně přechodu na nový řádek.
    • U nebo UNICODE - pro \w, \W, \b a \B nastaví Unicode rozšíření.
    • X nebo VERBOSE - ignoruje komentáře a neviditelné znaky.

    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'
    
           

    Hodnocení: 100 %

            špatné • dobré        

    Nástroje: Tisk bez diskuse

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

    Komentáře

    Vložit další komentář

    Jiří P. avatar 10.4.2007 09:40 Jiří P. | skóre: 24 | blog: programování
    Rozbalit Rozbalit vše Re: Standardní knihovna pro Python - 8 (regulární výrazy 1)
    Pro skládání reg. výrazů a jejich odladění se mi velice osvědčil prográmek kodos.
    In a world without fences and walls, who needs Gates and Windows?
    10.4.2007 10:17 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Standardní knihovna pro Python - 8 (regulární výrazy 1)
    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)
    
    10.4.2007 14:26 Jakub Matys
    Rozbalit Rozbalit vše Re: Standardní knihovna pro Python - 8 (regulární výrazy 1)
    Omlouvam se - chybicka se vloudila. V komentari melo opravdu byt 1900 az 2099.
    10.4.2007 14:38 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Standardní knihovna pro Python - 8 (regulární výrazy 1)
    btw, aj tie hexa čísla sú nejaký zvláštny regexp. Autor mohol predviesť ignore-case match :-)
    m/^(?:0|(?!0)[0-9a-f]+)$/i
    
    mj41 avatar 10.4.2007 18:13 mj41 | skóre: 17 | blog: mj41 | Brno
    Rozbalit Rozbalit vše Re: Standardní knihovna pro Python - 8 (regulární výrazy 1)
    Jak se da v Pythonu jednoduse udelat Perlovske:

    die "Zadany retezec neobsahuje letopocet od 1900 do 2099.\n" if $retezec !~ /(19|20)[0-9]{2}/;

    ?
    10.4.2007 20:26 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Standardní knihovna pro Python - 8 (regulární výrazy 1)
    třeba takhle
    #!/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
    
    11.4.2007 13:37 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Standardní knihovna pro Python - 8 (regulární výrazy 1)
    Afaik volání die prostě ukončí interpreter Perlu, takže v Pythonu by tomu odpovídalo exit. Výjimka se dá pomocí except zachytit a zpracovat ... <rejp>
    Při vyvolávání výjimky si typicky objekt reprezentující výjimku vytvářím -- doporučuje se zápis vyjadřující konstrukci nového objektu ;-)
    py.cz
    </rejp>
    When your hammer is C++, everything begins to look like a thumb.
    10.12.2021 12:03 ahmedsayeed1982
    Rozbalit Rozbalit vše Re: Standardní knihovna pro Python - 8 (regulární výrazy 1)
    some periods, Nvidia can squeeze new ones among the existing card models. In such cases, the newly announced graphics card(s) are slightly more powerful than the cards of the same model. Nvidia has leaked graphics card a new graphics card model, in the 497.09 graphics card driver version. The new graphics card was leaked in the patch notes of the 497.09 driver published on Nvidia's site on Wednesday. It turned out that Nvidia's new graphics card model, the 12 GB RTX Nvidia's site 2060 Super, is supported with the 497.09 driver. Although Nvidia has not officially introduced the graphics card yet, the phrase in the patch notes winks at the future of a new graphics card. You can see the statement GeForce RTX 2060 of GeForce RTX 2060 12 GB graphics card on page 8 of the PDF at this link. Nvidia introduced some RTX 2060 Super offerings to the market in early 2021. The company did not perform a promotion for users, their purpose was only to survey RTX Super 2060 the market. Meanwhile, Nvidia continued to produce RTX 3000 series cards. For a long time, rumors of a 12GB RTX 2060 variant had excited users. Some rumors that appeared on Twitter and YouTube also pointed to the future of the new graphics Nvidia card. Still, users preferred to approach the rumors carefully. Since then, this new graphics card has remained a rumor until Nvidia's minor bug was revealed. Although Nvidia has not yet officially announced the 12 GB RTX 2060 12 GB RTX 2060 Super graphics card, the phrase in the PDF gives a certainty to the graphics card. Normally, RTX 2060 Super models have 8 GB of VRAM, and this new 12 GB model will be able to offer wider usage areas. The price and availability of the new graphics card are not yet known. It is also unknown whether Nvidia Nvidia card is planning a launch for the card. It is thought that Nvidia made this leak on purpose to prepare the market for the new graphics card. Since then, this new graphics card has remained a rumor until the minor error that Nvidia new graphics card made was revealed. Although Nvidia has not yet officially announced the 12 GB RTX 2060 Super graphics card, the phrase in the PDF gives a certainty to the graphics card. Normally, RTX 2060 Super models have 8 GB of VRAM, and this new 12 GB model will be able to offer wider usage areas. 12 gb graphics card The price and availability of the new graphics card are not yet known. It is also unknown whether Nvidia is planning a launch for the card. It is thought that Nvidia deliberately made this leak to prepare the market for the new graphics card. The price and availability of the new graphics card are not yet known. It is also unknown whether latest graphics card Nvidia is planning a launch for the card. It is thought that Nvidia deliberately made this leak to prepare the market for the new graphics card. In some periods, Nvidia can squeeze new ones among the existing card models. In such cases, the newly announced graphics card(s) are slightly more powerful than the cards Nvidia and amd of the same model. Nvidia has leaked a new graphics card model, in the 497.09 graphics card driver version. The new graphics card was leaked in the patch notes of the 497.09 driver published on Nvidia's site on Wednesday. It turned out that Nvidia's new graphics card model, the 12 GB RTX 2060 Amd graphics card Super, is supported with the 497.09 driver. Although Nvidia has not officially introduced the graphics card yet, the phrase in the patch notes winks at the future of a new graphics card. You amd graphics can see the statement of GeForce RTX 2060 12 GB graphics card on page 8 of the PDF at this link. Nvidia introduced some RTX 2060 Super offerings to the market in early 2021. The company did not perform a promotion for users, their purpose was only to survey the market. Meanwhile, Nvidia continued to produce RTX 3000 series cards. For rtx 2060 a long time, rumors of a 12GB RTX 2060 variant had excited users. Some rumors that appeared on Twitter and YouTube also pointed to the future of the new graphics card. Still, users preferred to approach the rumors carefully. Since then, this new graphics card super rtx has remained a rumor until Nvidia's minor bug was revealed. Although Nvidia has not yet officially announced the 12 GB RTX 2060 Super graphics card, the phrase in the PDF gives a certainty to the graphics card. Normally, RTX 2060 Super models rtx 2060 super have 8 GB of VRAM, and this new 12 GB model will be able to offer wider usage areas. The price and availability of the new graphics card are not yet known. It is also unknown whether Nvidia is planning a launch for the card. It is thought that Nvidia made this leak on purpose to prepare the market for the new graphics card. Nvidia Since then, this new graphics card has remained a rumor until the minor error that Nvidia made was revealed. Although Nvidia has not yet officially announced the 12 GB RTX 2060 Super graphics card, the phrase in the PDF gives a certainty to the graphics card. Normally, RTX 2060 super graphics cards Super models have 8 GB of VRAM, and this new 12 GB model will be able to offer wider usage areas. The price and availability of the new graphics card are not yet known. It is also unknown whether Nvidia is planning a launch for the card. It is thought that Nvidia deliberately made this leak to prepare the market for the new graphics card. The price graphics cards 2021 and availability of the new graphics card are not yet known. It is also unknown whether Nvidia is planning a launch for the card. It is thought that Nvidia deliberately made this leak to prepare the market for the new graphics card.

    Založit nové vlákno • Nahoru

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