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:33 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na jednodeskový počítač Renegade Elite. Měl by být 4x výkonnější než Raspberry Pi 3 Model B+. Vlastnit jej lze již v září. Aktuální cena je 99 dolarů.

Ladislav Hagara | Komentářů: 5
dnes 12:44 | Komunita

Od 7. do 10. června proběhla v Berlíně Linux Audio Conference 2018. Na programu byla řada zajímavých přednášek, seminářů a vystoupení. Videozáznamy lze zhlédnout na media.ccc.de.

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

Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.

xkucf03 | Komentářů: 0
14.7. 22:44 | Nová verze

Bylo oznámeno vydání KDE Frameworks 5.48.0, tj. nové verze aktuálně 72 knihoven rozšířujících multiplatformní framework Qt. Řešena je mimo jiné bezpečnostní chyba CVE-2018-10361 v KTextEditoru zneužitelná k lokální eskalaci práv. Knihovny KDE Frameworks jsou dnes využívány nejenom KDE Plasmou a KDE Aplikacemi.

Ladislav Hagara | Komentářů: 5
14.7. 20:11 | Nová verze

Byl vydán Debian 9.5, tj. pátá opravná verze Debianu 9 s kódovým názvem Stretch. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Předchozí instalační média Debianu 9 Stretch lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

Ladislav Hagara | Komentářů: 12
13.7. 23:55 | Komunita

V Národní technické knihovně (NTK) je 150 nových počítačů s operačním systémem Linux, konkrétně s linuxovou distribucí Fedora. Do konce prázdnin si na nich lze zahrát počítačovou hru Factorio (Wikipedie). V pondělí 23. 7. proběhne LAN party s vývojáři této hry.

Ladislav Hagara | Komentářů: 0
13.7. 17:33 | Zajímavý software

Fanatical (Wikipedie) má ve slevě řadu počítačových her běžících také na Linuxu. Balíček her Fanatical Strategy Bundle lze koupit za 1,99 eur.

Ladislav Hagara | Komentářů: 1
13.7. 11:44 | Zajímavý software

Byla vydána počítačová hra Warhammer 40,000: Gladius - Relics of War běžící také na Linuxu. Koupit ji lze na GOG, Humble Store i na Steamu. Videoukázka na YouTube.

Ladislav Hagara | Komentářů: 0
13.7. 10:33 | Komunita

Guido van Rossum, původní tvůrce a doposud vedoucí projektu Python, oznámil, že opouští svou roli, tedy již se nebude podílet na tvorbě PEP a výběru hlavních vývojářů, odchází na odpočinek a do budoucna bude nejvýše řadovým přispěvatelem. Situace vyplynula mj. z procesu schvalování PEP 572.

Fluttershy, yay! | Komentářů: 4
12.7. 17:22 | Nasazení Linuxu

Článek na OMG! Ubuntu! představuje vesmírného interaktivního asistenta CIMON (Crew Interactive Mobile CompaniON) vyvinutého ve spolupráci firem Airbus a IBM. Uvnitř této osmikilogramové koule s osmipalcovým displejem běží Ubuntu. Více ve videu na YouTube.

Ladislav Hagara | Komentářů: 7
Jak čtete delší texty z webových stránek?
 (77%)
 (20%)
 (5%)
 (7%)
 (2%)
 (10%)
Celkem 354 hlasů
 Komentářů: 40, poslední 29.6. 10:21
    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: 381×
    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: 41 | 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.