eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingWyrażenie regularne - prośba o wyjaśnienie działania › Re: Wyrażenie regularne - prośba o wyjaśnienie działania
  • X-Received: by 10.31.60.4 with SMTP id j4mr5284vka.23.1500494238460; Wed, 19 Jul 2017
    12:57:18 -0700 (PDT)
    X-Received: by 10.31.60.4 with SMTP id j4mr5284vka.23.1500494238460; Wed, 19 Jul 2017
    12:57:18 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net
    !2.us.feeder.erje.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!b
    order1.nntp.dca1.giganews.com!nntp.giganews.com!14no465889qtn.1!news-out.google
    .com!g57ni103qtg.1!nntp.google.com!l55no585709qtl.0!postnews.google.com!glegrou
    psg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Wed, 19 Jul 2017 12:57:18 -0700 (PDT)
    In-Reply-To: <3...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=37.128.32.165;
    posting-account=pyti1AoAAAAf66c003TUy10QAAnMWaKw
    NNTP-Posting-Host: 37.128.32.165
    References: <3...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <6...@g...com>
    Subject: Re: Wyrażenie regularne - prośba o wyjaśnienie działania
    From: s...@g...com
    Injection-Date: Wed, 19 Jul 2017 19:57:18 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Lines: 27
    Xref: news-archive.icm.edu.pl pl.comp.programming:210730
    [ ukryj nagłówki ]

    Dziękuję za wyjaśnienia i wskazówki.
    Ogarnąłem pilniejsze tematy i trochę pogrzebałem w dokumentacji - i zaraz wyjaśnię to
    wyrażenie i podam prawidłowe rozwiązanie w Qt z QRegExp (stare wyrażenia regularne).

    "(^\\s)*(\\s+)$"
    Należy odczytać tak: początek pliku z pojedynczym białym znakiem może wystąpić zero
    lub więcej razy (ten fragment nigdy nie był spełniony), a po nim co najmniej jeden
    biały znak przed końcem pliku.
    To u mnie działało, gdyż w QPlainTextEdit::document()->find(QRegExp, index)
    najwyraźniej to wyrażenie odpala dla każdej linii osobno (chyba dlatego, że każda
    linia jest tam w osobnym bloku). Wtedy pierwsza część wyrażenia nie była nigdy
    spełniona a druga pasowała (wybierała wszystkie spacje przed końcem linii - bo każda
    linia była traktowana jako osobny dokument).


    "[ \\t]+(?:\\n|$)"
    To jest prawidłowe rozwiązanie. Grupowanie nie jest konieczne, gdyż selekcja tekstu w
    zwracanym kursorze (QTextCursor) jaką tworzy QPlainTextEdit::document()->find opiera
    się na całkowitym dopasowaniu wzorca, a nie na pierwszej dopasowanej/przechwyconej
    grupie. Tak więc: szukam co najmniej jednej spacji lub tabulatora jaka jest przed
    końcem linii lub przed końcem pliku. Choć jak pisałem ze względu na specyfikę tej
    funkcji find powinno wystarczyć by: "[ \\t]+(?:$)"

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: