-
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