eGospodarka.pl
eGospodarka.pl poleca

Ilość wypowiedzi w tym wątku: 3

  • 1. Data: 2012-10-03 13:15:24
    Temat: WR #2
    Od: "R.e.m.e.K" <g...@d...null>

    Witam

    Ponownie prosze o pomoc z wyrazeniem regularnym. Prosze tez o wybaczenie,
    ale dopiero temat ogarniam, wiec troche bladze.

    Otoz mam tekst np. SLOWO.67.45.2 gdzie stala czesc to SLOWO i kropki, a
    pomiedzy kropkami sa rozne liczby i jest ich czasem wiecej czasem mniej (co
    oznacza ze i kropek moze byc rozna liczba a zatem dopuszczalne sa i takie
    teksty: SLOWO.45).

    I chce teraz wyciagnac te liczby, wiec stosuje wyrazenie:

    (?:([0-9]+)[.]*?)+

    i mam w grupach liczby, jest ok. Ale zalezy mi tez by jednoczesnie
    zweryfikowac czy SLOWO jest prawidlowe i czy jest slowem np. KOLUMNA, pisze
    zatem wyrazenie:

    KOLUMNA\.(?:([0-9]+)[.]*?)+

    no i tu zaczynaja sie schody, bo teraz co prawda tekst sie weryfikuje jako
    zgodny z maska, ale grupe mam tylko jedna i w niej pierwsza liczbe, choc
    liczb jest wiecej:

    KOLUMNA.12.345.1

    Jak uwzglednic SLOWO by wyrazenie nadal wyciagalo liczby, ale jednoczesnie
    weryfikowalo czy na poczatku jest slowo zgodne z podanym wyrazeniem?

    --
    pozdro
    R.e.m.e.K


  • 2. Data: 2012-10-03 19:12:02
    Temat: Re: WR #2
    Od: Andrzej Jarzabek <a...@g...com>

    On 03/10/2012 12:15, R.e.m.e.K wrote:
    >
    > KOLUMNA\.(?:([0-9]+)[.]*?)+
    >
    > no i tu zaczynaja sie schody, bo teraz co prawda tekst sie weryfikuje jako
    > zgodny z maska, ale grupe mam tylko jedna i w niej pierwsza liczbe, choc
    > liczb jest wiecej:
    >
    > KOLUMNA.12.345.1
    >
    > Jak uwzglednic SLOWO by wyrazenie nadal wyciagalo liczby, ale jednoczesnie
    > weryfikowalo czy na poczatku jest slowo zgodne z podanym wyrazeniem?

    Twoim problemem nie jest to słowo na początku, tylko fakt, że grupy są
    po prostu przypisane do par nawiasów w wyrażeniu. Pierwsza grupa to
    pierwsza para nawiasów i nie da się uchwycić zmiennej ilości grup, po
    prostu. Nie wiem w jakim kontekście używasz tych wyrażeń, ale żeby
    zrobić to, co chcesz, musisz odciąć najpierw słowo (bądź to wyrażeniem
    regularnym, bądź prostszym środkiem), a następnie użyć funkcjonalności
    robijającej ci stringa na danym znaku/ciągu/wzorcu - jakieś split czy
    coś w tym stylu, w zależności jakiego języka jakiego używasz - jeśli C++
    to boost::split.


  • 3. Data: 2012-10-03 19:22:00
    Temat: Re: WR #2
    Od: "M.M." <m...@g...com>

    W dniu środa, 3 października 2012 13:15:26 UTC+2 użytkownik R.e.m.e.K napisał:
    > Witam
    > KOLUMNA\.(?:([0-9]+)[.]*?)+
    wyszukaj( text ) {
    if( text nie zaczyna sie od 'KOLUMNA' )
    return false;
    pozycja = dlugosc('KOLUMNA');
    regexp = "\.(\d+)"; // nie zapomnij poprawki na jezyk i dialekt wyrazen
    lista = pusta;
    while( wyszukaj_od_pozycji( text , regexp , pozycja , out ) ) {
    lista.dodaj( substring( out , 1 ) );
    pozycja += strlen(out);
    }
    return lista;
    }

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: