eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › wyrażenie regularne
Ilość wypowiedzi w tym wątku: 6

  • 1. Data: 2016-10-11 23:36:19
    Temat: wyrażenie regularne
    Od: Roman Tyczka <n...@b...no>


    Czy wyrażeniem regularnym da się sprawdzić poprawność łańcucha przy
    założeniu, że ma w nim być określona liczba cyfr, która może, ale nie musi,
    być poprzetykana innymi dozwolonymi znakami?

    Np. dozwolone znaki to spacja i litera D, a cyfr ma być 10, zatem łańcuchy:

    '123D4567 8D90' lub '1234567890' lub '1 2 3 4 5 6 7 8 9 0'

    są poprawne.
    Jak to ugryźć?

    --
    pozdrawiam
    Roman Tyczka


  • 2. Data: 2016-10-11 23:51:51
    Temat: Re: wyrażenie regularne
    Od: bartekltg <b...@g...com>

    On 11.10.2016 23:36, Roman Tyczka wrote:
    >
    > Czy wyrażeniem regularnym da się sprawdzić poprawność łańcucha przy
    > założeniu, że ma w nim być określona liczba cyfr, która może, ale nie musi,
    > być poprzetykana innymi dozwolonymi znakami?
    >
    > Np. dozwolone znaki to spacja i litera D, a cyfr ma być 10, zatem łańcuchy:
    >
    > '123D4567 8D90' lub '1234567890' lub '1 2 3 4 5 6 7 8 9 0'
    >
    > są poprawne.
    > Jak to ugryźć?
    >

    Coś takiego?

    [0-9]([ D]?[0-9]){9}

    albo, jeśli przeszkadzajek może być więcej

    [0-9]([ D]*[0-9]){9}

    pzdr
    bartekltg


  • 3. Data: 2016-10-12 04:43:16
    Temat: Re: wyrażenie regularne
    Od: "M.M." <m...@g...com>

    On Tuesday, October 11, 2016 at 11:36:21 PM UTC+2, Roman Tyczka wrote:
    > Czy wyrażeniem regularnym da się sprawdzić poprawność łańcucha przy
    > założeniu, że ma w nim być określona liczba cyfr, która może, ale nie musi,
    > być poprzetykana innymi dozwolonymi znakami?
    >
    > Np. dozwolone znaki to spacja i litera D, a cyfr ma być 10, zatem łańcuchy:
    >
    > '123D4567 8D90' lub '1234567890' lub '1 2 3 4 5 6 7 8 9 0'
    >
    > są poprawne.
    > Jak to ugryźć?
    >
    > --
    > pozdrawiam
    > Roman Tyczka

    Da się wszystko sprawdzić, o ile testowana składnia nie dopuszcza
    dowolnej ilości zagnieżdżeń. Skończoną ilość zagnieżdżeń też można
    sprawdzać regexpem. Inna sprawa, czy da się wydajnie sprawdzić, nie
    jestem pewny co jest akceptowalne w Twoim konkretnym przypadku.
    Czasami pisze się mniej ścisłe, ale za to prostsze wyrażenia, może
    wystarczy u Ciebie tak:
    (\d+\D*)+
    Albo tak:
    (\D*\d+\D*)+
    A może musisz tak:
    (\d+[D ]*){10}
    Albo tak
    ([D ]*\d+[D ]*){10}

    Pozdrawiam.




  • 4. Data: 2016-11-09 11:33:10
    Temat: Re: wyrażenie regularne
    Od: Roman Tyczka <n...@b...no>

    On Tue, 11 Oct 2016 23:36:19 +0200, Roman Tyczka wrote:

    Dzięki obu Panom za poprzednią pomoc.
    Mam kolejny chyba banalny problem, ale się zawiesiłem...

    Mam string typu:

    Content-ID: <http://tempuri.org/0>
    Content-Transfer-Encoding:
    8bit
    Content-Type:
    application/xop+xml;charset=utf-8;type="application/
    soap+xml"

    <s:Envelope
    xmlns:s="http...

    I chcę złapać początek od tagu:

    <s:Envelope

    ale z założeniem, że litera s może być dowolnym innym ciągiem, czyli szukam
    wzorca na <_dowolnyciag_:Envelope, niemniej wyrażenie:

    <.*:Envelope .*

    łapie wcześniej, od tagu <http

    Myślałem, że wrzucę po prostu operator lazy czyli

    <.*?:Envelope .*

    i po kłopocie... ale to nic nie dało.
    Jak zatem nakazać regexpowi, by wziął klamrę otwierającą < najbliższą do
    słowa Envelope z lewej strony?

    --
    pozdrawiam
    Roman Tyczka


  • 5. Data: 2016-11-09 12:53:27
    Temat: Re: wyrażenie regularne
    Od: g...@g...com

    W dniu środa, 9 listopada 2016 11:33:11 UTC+1 użytkownik Roman Tyczka napisał:
    > On Tue, 11 Oct 2016 23:36:19 +0200, Roman Tyczka wrote:
    >
    > Dzięki obu Panom za poprzednią pomoc.
    > Mam kolejny chyba banalny problem, ale się zawiesiłem...
    >
    > Mam string typu:
    >
    > Content-ID: <http://tempuri.org/0>
    > Content-Transfer-Encoding:
    > 8bit
    > Content-Type:
    > application/xop+xml;charset=utf-8;type="application/
    soap+xml"
    >
    > <s:Envelope
    > xmlns:s="http...
    >
    > I chcę złapać początek od tagu:
    >
    > <s:Envelope
    >
    > ale z założeniem, że litera s może być dowolnym innym ciągiem, czyli szukam
    > wzorca na <_dowolnyciag_:Envelope, niemniej wyrażenie:
    >
    > <.*:Envelope .*
    >
    > łapie wcześniej, od tagu <http
    >
    > Myślałem, że wrzucę po prostu operator lazy czyli
    >
    > <.*?:Envelope .*
    >
    > i po kłopocie... ale to nic nie dało.
    > Jak zatem nakazać regexpowi, by wziął klamrę otwierającą < najbliższą do
    > słowa Envelope z lewej strony?

    A jeżeli nie dopuścisz dowolnych słów, a tylko takie, które np.
    nie zawierają < i >:

    <[^<>]*:Envelope

    ?


  • 6. Data: 2016-11-09 13:23:53
    Temat: Re: wyrażenie regularne
    Od: Roman Tyczka <n...@b...no>

    On Wed, 9 Nov 2016 03:53:27 -0800 (PST), g...@g...com wrote:

    >> Jak zatem nakazać regexpowi, by wziął klamrę otwierającą < najbliższą do
    >> słowa Envelope z lewej strony?
    >
    > A jeżeli nie dopuścisz dowolnych słów, a tylko takie, które np.
    > nie zawierają < i >:
    >
    > <[^<>]*:Envelope
    >
    > ?

    No popatrz jaki ten regexp wielościeżkowy, jakoś pominąłem tą drogę ;-)
    Thx!
    Niemniej nadal ciekawi mnie czy jest możliwe zrobienie tego wg idei
    opisanej w moim poprzednim poście.

    --
    pozdrawiam
    Roman Tyczka

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: