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 15:11 | Komunita

    Na webu konference Den IPv6, která se konala 4. června v Národní technické knihovně v pražských Dejvicích, jsou nyní k dispozici všechny prezentace (v PDF) a jejich videozáznamy. Organizátory konference byly i letos sdružení CESNET, CZ.NIC a NIX.CZ.

    VSladek | Komentářů: 0
    dnes 13:11 | Nová verze

    Byla vydána nová verze 9.1.0 správce sbírky fotografií digiKam (Wikipedie). Přehled novinek i s náhledy v oficiálním oznámení (NEWS). Vypíchnout lze vylepšené vyhledávání nebo podporu Pixel Motion Photos. Nejnovější digiKam je ke stažení také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.

    Ladislav Hagara | Komentářů: 0
    dnes 11:44 | Pozvánky

    Přihlaste svou přednášku na další ročník konference LinuxDays, který proběhne 3. a 4. října na FIT ČVUT v pražských Dejvicích. Příjem témat poběží do konce prázdnin, pak proběhne veřejné hlasování a následně sestavení programu.

    Petr Krčmář | Komentářů: 2
    dnes 04:44 | Nová verze

    Byla vydána nová verze 2.4.68 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 13 zranitelností.

    Ladislav Hagara | Komentářů: 2
    včera 22:44 | IT novinky

    Apple na své vývojářské konferenci WWDC26 (Worldwide Developers Conference, keynote) představil řadu novinek. Vypíchnout lze novou generaci Apple Intelligence a zbrusu novou Siri, která dostala název Siri AI. Kvůli Aktu o digitálních trzích (DMA) však funkce Siri AI nebudou v systémech iOS 27 a iPadOS 27 k dispozici uživatelům v Evropské unii.

    Ladislav Hagara | Komentářů: 0
    včera 22:22 | Nová verze

    Byla vydána nová verze 1.18.0 distribučního frameworku Flatpak (Wikipedie), tj. technologie umožňující distribuovat aplikace v podobě jednoho instalačního souboru na různé linuxové distribuce a jejich různá vydání. Přehled novinek na GitHubu. Vypíchnout lze podporu rozhraní /dev/kfd pro výpočty na kartách AMD (AMDKFD).

    Ladislav Hagara | Komentářů: 0
    včera 20:44 | Nová verze

    aMule (Wikipedie), tj. multiplatformní klient pro peer-to-peer sdílení souborů pro sítě eD2k and Kademlia, byl po více než pěti letech od vydání poslední verze 2.3.3, vydán v nové major verzi 3.0.0 (GitHub). S novou webovou stránkou a dokumentací.

    Ladislav Hagara | Komentářů: 5
    včera 12:55 | IT novinky

    Byly vyhlášeni vítězové a zveřejněny vítězné zdrojové kódy (YouTube, GitHub) již 29. ročníku soutěže International Obfuscated C Code Contest (IOCCC), tj. soutěže o nejnepřehlednější (nejobfuskovanější) zdrojový kód v jazyce C.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | IT novinky

    Evropská komise předložila evropský balíček pro technologickou suverenitu, tedy soubor opatření, která mají posílit kapacity EU v oblasti polovodičů, umělé inteligence, cloudu a open source. To Evropě pomůže stát se lídrem v oblasti umělé inteligence, posílit její digitální autonomii a vytvářet podmínky pro udržitelnější digitální budoucnost.

    Ladislav Hagara | Komentářů: 15
    včera 04:44 | Nová verze

    OpenCV (Open Source Computer Vision, Wikipedie), tj. open source multiplatformní knihovna pro zpracování obrazu a počítačové vidění, byla vydána v nové major verzi 5.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (15%)
     (31%)
     (3%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 1855 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: Regex na cestu k souboru v xml/cpp

    18.4.2017 20:37 דניאל | blog: godismyjudge
    Regex na cestu k souboru v xml/cpp
    Přečteno: 533×
    Potŕeboval bych poradit s regexem. Potřebuji v Qt, pomocí QRegularExpression, udělat regex, který mi v souborech najde řetězce, které jsou cesty "resource souborů" v Qt. Taková cesta má formát :/nějaká/cesta/soubor.abc. Potřebuji capture na část nějaká/cesta/soubor.abc. Problém je, že jednoduchý regex mi pak matchne v řetězci return ":/nějaká/cesta"; const char *a = ".txt"; část ":/nějaká/cesta"; const char *a = ".txt, což je špatně. Musím to tedy udělat přísněji. Cesta je buď v dvojitých uvozovkách, v jednoduchých uvozovkách, v html/xml tagu nebo v css v závorkách (např. url(:/bla/bla.abc)). A to je problém. Chtěl bych to mít jako jeden regex, kde by to bylo zkombinované. Nějak bych to nakombinoval s or operací, ale pak bych měl třeba na ":/moje/cesta.abc&t;/tag> match, což také nechci.

    Nejdále jsem se dostal k regexu (["']:\/|>\s*?:\/|\(:)(.*?)(["']|\s*?<|\)) (můžete vyzkoušet třeba na regex101.com). Jenže to matchuje i to, co nechci.
    ":/moje/cesta.abc"
    
    ':/moje/cesta.abc'
    
    <url>:/moje/cesta.abc</url>
    
    <bla><a>:/moje/cesta1.abc<b>:/moje/cesta2.abc</bla>
    
    neco: url(:/moje/cesta.abc)
    
    ":/moje/cesta.abc' // nechci match
    
    <url>:/moje/cesta.abc' // nechci match
    

    Odpovědi

    18.4.2017 20:42 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    Zkus s tím souborem pracovat jako s XML - tyto problémy odpadnou.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    19.4.2017 05:58 דניאל | blog: godismyjudge
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    Neodpadnou. Jsou to soubory vícero typů (xml/ui, cpp a css), snažím se o regex, který je obslouží všechny (protože v cpp stejně můžu mít kus css či xml/html jako řetězec), pokud možno s co nejméně falešnými výsledky. Ten regex, co jsem napsal, to více méně zvládne, ale je takový ošklivý, jestli by nešel zjednodušit. Ty poslední 2 matche, které nejsou chtěné, zatím tak hrozně nevadí, ale bylo by lepší, kdyby nebyly.
    19.4.2017 07:50 NN
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    Puzil bych negativni lookahead. Nekdy je lepsi hledat podminku ktera "nevyhovuje".
    19.4.2017 09:03 ramlok0
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    hledas 4 specificke podminky - zacatek/konce matche - tohle funguje:

    (["]:\/)(.*?)(["])|([']:\/)(.*?)(['])|([>]:\/)(.*?)([<])|([(]:\/)(.*?)([)])
    19.4.2017 19:17 דניאל | blog: godismyjudge
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    Ano, matche jsou správné, ale zase tam je problém, že capture group pro tu cestu je pokaždé jiná.
    wamba avatar 19.4.2017 20:29 wamba | skóre: 38 | blog: wamba
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp

    Tak je lze pojmenovat. Navíc pravděpodobně půjde regexp složit s řetězců. Tak můžete napsat obdobu následujícího Perl one-lineru:

    perl -nE '
        BEGIN {
            my $cesta = ":(?<cesta>.*?)";
            our $rx= join "|", map {sprintf $_, $cesta} (q{"%s"}, q{\'%s\'}, q{>%s<}, q{\(%s\)});
            say $rx 
        };
        say $+{cesta} while /$rx/g
    ' /tmp/pom.txt             
    
    ":(?<cesta>.*?)"|':(?<cesta>.*?)'|>:(?<cesta>.*?)<|\(:(?<cesta>.*?)\)
    /moje/cesta.abc
    /moje/cesta.abc
    ...
    
    This would have been so hard to fix when you don't know that there is in fact an easy fix.
    20.4.2017 19:01 דניאל | blog: godismyjudge
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    Když tam ale mám stejné názvy, dostávám chybu "A subpattern name must be unique" :-(
    wamba avatar 20.4.2017 19:41 wamba | skóre: 38 | blog: wamba
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    v Perlu to funguje, tak je třeba odzkoušet jestli to nefunguje i v Qt a nespoléhat se na implementaci na https://regex101.com/
    This would have been so hard to fix when you don't know that there is in fact an easy fix.
    21.4.2017 13:01 RM
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    Já, pokud má být cílem minimalizovat nečitelnost (reg. výrazu), bych ty dva řádky napsal takhle (já ten sprintf nemusim;):
        $cesta = ":(?<cesta>.*?)";
        @maska=qw{ "cesta" 'cesta' >cesta< \(cesta\) };
        s/cesta/$cesta/ foreach @maska;
        $rx= join "|", @maska;
    
    20.4.2017 15:02 ramlok0
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    Ok, opraveno, ted je capture group vzdy stejna. ((["'])|(>)?|(\()?):\/(.*?)(\1|(?(1)<)|(?(1)\)))
    20.4.2017 18:58 דניאל | blog: godismyjudge
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    Teď to ale matchuje ty 2, které nechci, a naopak ty, co chci, to nematchuje. No asi to nebude tak jednoduché, jak jsem si myslel.
    ":/moje/cesta.abc'
    <url>:/moje/cesta.abc'
    
    20.4.2017 19:38 ramlok0
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    Hm, me to funguje, nemas extra mezeru za posledni zavorkou?
    wamba avatar 20.4.2017 20:08 wamba | skóre: 38 | blog: wamba
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    u mě to taky funguje, ale selže to při: <url>:/cest/a)
    This would have been so hard to fix when you don't know that there is in fact an easy fix.
    21.4.2017 19:33 דניאל | blog: godismyjudge
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    Opravdu to byla mezera na konci, omlouvám se. Teď je stále na těch 2 posledních ale match, s tím, že group 0 je :/ a ostatní jsou prázdné. Ale je to pokrok, děkuji.
    20.4.2017 20:03 Charon
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    OK, zkusil jsem pro Vás inovaci REGEX od RAMLOK.
    ((["'])|[>\(]):\/(.*?)(\2|[<\)])
    Přínosem v řešení je dekompozice stop-tokenů od match-textu. Tím vznikne kratší zápis, který je i přehlednější. Čímž neříkám, že původní zápis byl špatný. Nuže, posuďte teď můj.

    Bye.
    21.4.2017 19:41 דניאל | blog: godismyjudge
    Rozbalit Rozbalit vše Re: Regex na cestu k souboru v xml/cpp
    Tohle vypadá opravdu dobře, asi ho použiju. Regexem to asi lépe nepůjde a bez plnohodnotných parserů prostě nechtěný match bude moci nastat. To s tou \2 teď vidím poprvé, netušil jsem, že něco takového jde.

    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.