-
1. Data: 2012-10-01 11:22:55
Temat: Wyrazenie regularne - wiele linii
Od: "R.e.m.e.K" <g...@d...null>
Witam
Standard PCRE. Chce wyszukac wzorzec w tekscie wielolinijkowym, ktory
zaczyna sie w jednej linii a konczy w kolejnej (lub jeszcze dalej) i wyjac
stamtad kawalek tekstu.
np. zalozmy ze mam cos takiego do przeszukania:
&znacznik1
#jakis krotki tekst#20#inny dlugi tekst
ktory przechodzi do nowej linii#30# kolejny tekst#40nastepny
ktory jest wieloliniowy
&znacznik2
#jaklis tekst#20#inny dlugi tekst
ktory takze przechodzi do nowej linii#30#tutaj zaczyna sie to
czego szukam i chce to wyjac#40#nastepny tekst
ktory jest wieloliniowy#50#i tak dalej
i chce wydobyc tekst, ktory jest PO &znacznik2& i zawiera sie miedzy #30# a
nastepnym hashem #
Jak to zadeklarowac we wzorcu?
Takim wzorce m:
&znacznik2&(?:.*)#30#([ \p{L}]*)
wydobede to czego szukam pod warunkiem ze usune wszystkie znaki konca linii.
Czy da sie i jak szukac bez usuwania koncow linii?
--
pozdro
R.e.m.e.K
-
2. Data: 2012-10-01 11:43:11
Temat: Re: Wyrazenie regularne - wiele linii
Od: Edek Pienkowski <e...@g...com>
Dnia Mon, 01 Oct 2012 11:22:55 +0200, R.e.m.e.K napisal:
> Czy da sie i jak szukac bez usuwania koncow linii?
Zazwyczaj jest to opcja poza samym wyrażeniem. Kwestia
bardziej narzędzia niż wyrażenia.
--
Edek
-
3. Data: 2012-10-01 11:48:56
Temat: Re: Wyrazenie regularne - wiele linii
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2012-10-01, R.e.m.e.K <g...@d...null> wrote:
> Standard PCRE. Chce wyszukac wzorzec w tekscie wielolinijkowym, ktory
> zaczyna sie w jednej linii a konczy w kolejnej (lub jeszcze dalej) i wyjac
> stamtad kawalek tekstu.
[...]
> Jak to zadeklarowac we wzorcu?
>
> Takim wzorce m:
>
> &znacznik2&(?:.*)#30#([ \p{L}]*)
>
> wydobede to czego szukam pod warunkiem ze usune wszystkie znaki konca linii.
>
> Czy da sie i jak szukac bez usuwania koncow linii?
Dwie możliwości: albo włączyć znak nowej linii do wzorca (ktoś ci
broni?), albo użyć opcji /s.
--
Secunia non olet.
Stanislaw Klekot
-
4. Data: 2012-10-01 21:19:32
Temat: Re: Wyrazenie regularne - wiele linii
Od: "M.M." <m...@g...com>
W dniu poniedziałek, 1 października 2012 11:22:56 UTC+2 użytkownik R.e.m.e.K napisał:
> Standard PCRE. Chce wyszukac wzorzec w tekscie wielolinijkowym, ktory
> zaczyna sie w jednej linii a konczy w kolejnej (lub jeszcze dalej) i wyjac
> stamtad kawalek tekstu.
Ostatnio zamienilem wszystkie znaki nowego wiersza na spacje w takiej sytuacji.
Pozdrawiam
-
5. Data: 2012-10-01 21:31:09
Temat: Re: Wyrazenie regularne - wiele linii
Od: "R.e.m.e.K" <g...@d...null>
Dnia Mon, 1 Oct 2012 09:48:56 +0000 (UTC), Stachu 'Dozzie' K. napisał(a):
>> Czy da sie i jak szukac bez usuwania koncow linii?
>
> Dwie możliwości: albo włączyć znak nowej linii do wzorca (ktoś ci
> broni?),
Ano troche broni - nie zawsze te teksty wychodza poza linie.
> albo użyć opcji /s.
Thx.
--
pozdro
R.e.m.e.K
-
6. Data: 2012-10-01 21:48:17
Temat: Re: Wyrazenie regularne - wiele linii
Od: "R.e.m.e.K" <g...@d...null>
Dnia Mon, 1 Oct 2012 09:43:11 +0000 (UTC), Edek Pienkowski napisał(a):
>> Czy da sie i jak szukac bez usuwania koncow linii?
>
> Zazwyczaj jest to opcja poza samym wyrażeniem. Kwestia
> bardziej narzędzia niż wyrażenia.
Thx.
--
pozdro
R.e.m.e.K
-
7. Data: 2012-10-01 21:50:00
Temat: Re: Wyrazenie regularne - wiele linii
Od: "R.e.m.e.K" <g...@d...null>
Dnia Mon, 1 Oct 2012 12:19:32 -0700 (PDT), M.M. napisał(a):
>> Standard PCRE. Chce wyszukac wzorzec w tekscie wielolinijkowym, ktory
>> zaczyna sie w jednej linii a konczy w kolejnej (lub jeszcze dalej) i wyjac
>> stamtad kawalek tekstu.
> Ostatnio zamienilem wszystkie znaki nowego wiersza na spacje w takiej sytuacji.
> Pozdrawiam
Jednak poradzilem sobie bez takiej operacji.
RE choc dosc skompilowane daja potezne mozliwosci. Ale uzywam ich rzadko i w
nieduzym zakresie, stad "zawieszanie sie".
--
pozdro
R.e.m.e.K
-
8. Data: 2012-10-01 22:08:56
Temat: Re: Wyrazenie regularne - wiele linii
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2012-10-01, R.e.m.e.K <g...@d...null> wrote:
> Dnia Mon, 1 Oct 2012 09:48:56 +0000 (UTC), Stachu 'Dozzie' K. napisał(a):
>
>>> Czy da sie i jak szukac bez usuwania koncow linii?
>>
>> Dwie możliwości: albo włączyć znak nowej linii do wzorca (ktoś ci
>> broni?),
>
> Ano troche broni - nie zawsze te teksty wychodza poza linie.
A nie da się napisać regexpa, który może zawierać zero lub więcej znaków
NL?
--
Secunia non olet.
Stanislaw Klekot
-
9. Data: 2012-10-02 00:24:31
Temat: Re: Wyrazenie regularne - wiele linii
Od: "AK" <n...@n...com>
Użytkownik "R.e.m.e.K" <g...@d...null> napisał:
> Jednak poradzilem sobie bez takiej operacji.
Akurat w pcre mozesz wstawic w samo wyrazenie znacznik mowiacy, ze ma byc trakowane
jako multiline a nie singleline.
(Podobnie jak w przypadku problemu greedy/nongreedy).
AK
-
10. Data: 2012-10-02 18:01:26
Temat: Re: Wyrazenie regularne - wiele linii
Od: "M.M." <m...@g...com>
W dniu wtorek, 2 października 2012 00:24:43 UTC+2 użytkownik AK napisał:
> Użytkownik "R.e.m.e.K" <g...@d...null> napisał:
> > Jednak poradzilem sobie bez takiej operacji.
> Akurat w pcre mozesz wstawic w samo wyrazenie znacznik mowiacy, ze ma byc trakowane
> jako multiline a nie singleline.
> (Podobnie jak w przypadku problemu greedy/nongreedy).
Starsze wersje Qt domyslnie dzialaly w inny sposob niz nowe.
Jakby tego bylo malo mozemy przeczytac:
[Note that QRegExp does not work properly for multi-line patterns. For Qt 5,
replacements for QRegExp are being considered]
Wiec ja zamienilem nowe linie na spacje i spie spokojnie.
Pozdrawiam