eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › wyrazenie regularne - find and replace
Ilość wypowiedzi w tym wątku: 8

  • 1. Data: 2014-04-04 09:55:09
    Temat: wyrazenie regularne - find and replace
    Od: z...@g...com

    hej,
    mam problem z wyrazeniem regularnym. Text do obrobki:
    --------
    :X
    :59:/435354
    sfds
    safasaf
    fgdf
    :70:TEXT
    :71A:S
    jakies dziadostwo
    :67:dsfsdsf
    sfddsf
    :59:/HU434
    CB 3
    44, 33
    :7 a
    -------
    Zadaniem jest aby entery w takich zaznacoznych obszarach byly zamienione na np.
    wykrzyknik.

    Wyprodukowalem takie rozwiazanie:
    text do znalezienia: (:59:.*?.)\r\n(.*?)\r\n(.*?)\r\n:
    text do zmaiany: \1!\2!\3!:

    ale niestety w ten sposob jest hardcodem lista linii w polu 59. Tymczasem moze byc
    ich dwie a moze piec.

    Poprosze o jakas pomoc.

    zlotawy


  • 2. Data: 2014-04-04 11:37:04
    Temat: Re: wyrazenie regularne - find and replace
    Od: g...@g...com

    W dniu piątek, 4 kwietnia 2014 09:55:09 UTC+2 użytkownik z...@g...com napisał:
    >
    > Wyprodukowalem takie rozwiazanie:
    > text do znalezienia: (:59:.*?.)\r\n(.*?)\r\n(.*?)\r\n:
    > text do zmaiany: \1!\2!\3!:
    >
    > ale niestety w ten sposob jest hardcodem lista linii
    > w polu 59. Tymczasem moze byc ich dwie a moze piec.
    >
    > Poprosze o jakas pomoc.

    chyba najprosciej uzyc asercji [1]:

    s/\r\n(?!:\d+:)/!/sg


    [1] http://perldoc.perl.org/perlre.html#Look-Around-Asse
    rtions


  • 3. Data: 2014-04-04 14:15:25
    Temat: Re: wyrazenie regularne - find and replace
    Od: z...@g...com

    W dniu piątek, 4 kwietnia 2014 11:37:04 UTC+2 użytkownik g...@g...com napisał:
    > W dniu piątek, 4 kwietnia 2014 09:55:09 UTC+2 użytkownik z...@g...com napisał:
    >
    > >
    >
    > > Wyprodukowalem takie rozwiazanie:
    >
    > > text do znalezienia: (:59:.*?.)\r\n(.*?)\r\n(.*?)\r\n:
    >
    > > text do zmaiany: \1!\2!\3!:
    >
    > >
    >
    > > ale niestety w ten sposob jest hardcodem lista linii
    >
    > > w polu 59. Tymczasem moze byc ich dwie a moze piec.
    >
    > >
    >
    > > Poprosze o jakas pomoc.
    >
    >
    >
    > chyba najprosciej uzyc asercji [1]:
    >
    >
    >
    > s/\r\n(?!:\d+:)/!/sg
    >
    >
    >
    >
    >
    > [1] http://perldoc.perl.org/perlre.html#Look-Around-Asse
    rtions

    a w notepad++ jakby to wygladalo?




  • 4. Data: 2014-04-04 15:05:45
    Temat: Re: wyrazenie regularne - find and replace
    Od: g...@g...com

    W dniu piątek, 4 kwietnia 2014 14:15:25 UTC+2 użytkownik z...@g...com napisał:

    > > > Poprosze o jakas pomoc.
    > >
    > > chyba najprosciej uzyc asercji [1]:
    > >
    > > s/\r\n(?!:\d+:)/!/sg
    > >
    >
    > a w notepad++ jakby to wygladalo?

    nie wiem czy notepad++ obsługuje asercje, ale jeśli tak, to:

    zamień
    \r\n(?!:\d+:)
    na
    !


  • 5. Data: 2014-04-05 10:35:49
    Temat: Re: wyrazenie regularne - find and replace
    Od: z...@g...com

    W dniu piątek, 4 kwietnia 2014 15:05:45 UTC+2 użytkownik g...@g...com napisał:
    > W dniu piątek, 4 kwietnia 2014 14:15:25 UTC+2 użytkownik z...@g...com napisał:
    >
    >
    >
    > > > > Poprosze o jakas pomoc.
    >
    > > >
    >
    > > > chyba najprosciej uzyc asercji [1]:
    >
    > > >
    >
    > > > s/\r\n(?!:\d+:)/!/sg
    >
    > > >
    >
    > >
    >
    > > a w notepad++ jakby to wygladalo?
    >
    >
    >
    > nie wiem czy notepad++ obsługuje asercje, ale jeśli tak, to:
    >
    >
    >
    > zamień
    >
    > \r\n(?!:\d+:)
    >
    > na
    >
    > !

    nie znajduje nawet /sg w notepad+


  • 6. Data: 2014-04-05 10:46:30
    Temat: Re: wyrazenie regularne - find and replace
    Od: g...@g...com

    W dniu sobota, 5 kwietnia 2014 10:35:49 UTC+2 użytkownik z...@g...com napisał:
    >
    > > nie wiem czy notepad++ obsługuje asercje, ale jeśli tak, to:
    > >
    > > zamień
    > > \r\n(?!:\d+:)
    > > na
    > > !
    >
    > nie znajduje nawet /sg w notepad+

    /sg to tylko przelaczniki dla perla/pcre: s oznacza, zeby dopasowywal
    wiele linii, a nie pojedyncza linie, natomiast g oznacza, zeby zamienil
    wszystkie wystapienia patternu, a nie tylko pierwsze. W notepadzie++
    pierwsza opcja jest domyslna, a druga odpowiada kliknieciu "zamien wszystkie
    wystapienia".


    natomiast sprawdzilem, i jezeli wpiszesz w notepadzie++,
    zeby zamienil wyrazenie regularne "\r\n(?!:\d+:)" na "!"
    na podanym przez Ciebie tekscie, to zachowa sie nalezycie
    (o ile wlasciwie zrozumialem Twoja intencje)


  • 7. Data: 2014-04-05 15:39:07
    Temat: Re: wyrazenie regularne - find and replace
    Od: z...@g...com

    W dniu sobota, 5 kwietnia 2014 10:46:30 UTC+2 użytkownik g...@g...com napisał:
    > W dniu sobota, 5 kwietnia 2014 10:35:49 UTC+2 użytkownik z...@g...com napisał:
    >
    > >
    >
    > > > nie wiem czy notepad++ obsługuje asercje, ale jeśli tak, to:
    >
    > > >
    >
    > > > zamień
    >
    > > > \r\n(?!:\d+:)
    >
    > > > na
    >
    > > > !
    >
    > >
    >
    > > nie znajduje nawet /sg w notepad+
    >
    >
    >
    > /sg to tylko przelaczniki dla perla/pcre: s oznacza, zeby dopasowywal
    >
    > wiele linii, a nie pojedyncza linie, natomiast g oznacza, zeby zamienil
    >
    > wszystkie wystapienia patternu, a nie tylko pierwsze. W notepadzie++
    >
    > pierwsza opcja jest domyslna, a druga odpowiada kliknieciu "zamien wszystkie
    >
    > wystapienia".
    >
    >
    >
    >
    >
    > natomiast sprawdzilem, i jezeli wpiszesz w notepadzie++,
    >
    > zeby zamienil wyrazenie regularne "\r\n(?!:\d+:)" na "!"
    >
    > na podanym przez Ciebie tekscie, to zachowa sie nalezycie
    >
    > (o ile wlasciwie zrozumialem Twoja intencje)



    hmmm no nie za specjalnie..
    intencja jest aby zamieniac tylko te konce linii ktore sa pomiedzy :59: a pierwszym
    dwukropkiem nastepujacym pozniej.


  • 8. Data: 2014-04-06 22:53:07
    Temat: Re: wyrazenie regularne - find and replace
    Od: z...@g...com

    hej,
    doszedlem do czego takiego:
    (:59:.*?.)(\r\n)(.*?)(\r\n)(.*?)(\r\n)?(.*?)(\r\n)?(
    .*?)(\r\n)?(:){1}
    i zamiana
    \1\3\5\7\9:

    czyli wyszukuje od 2 do 5 linii. Dwie sa obowiazkowe. Reszta opcjonalnie.
    Czyli dalem znak zapytania po \r\n dla ostatnich trzech linii.
    no i nie dziala usuwanie tych opcjonalnych enterow. usuwanie obowiazkowych dziala
    dobrze.
    moze cos tam brakuje jakiegos znaczka?

    zlotawy

strony : [ 1 ]


Szukaj w grupach

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: