Forum » Programiranje » Python regex
Python regex
ozbolt ::
Iscem regex, ki lovi naslednje:
- string dolzine 1, 2 ali 3
- prvi znak poljuben
- drugi znak ne sme biti 'X'
- tretji znak poljuben
Lovi: 'a', 'ab', 'abc'
Ne lovi: '', 'aX', 'aXc', 'abcd'
Moj poskus, ki napacno ulovi 'aX':
Lahko resim s for zanko, ampak sigurno obstaja kaj boljsega.
- string dolzine 1, 2 ali 3
- prvi znak poljuben
- drugi znak ne sme biti 'X'
- tretji znak poljuben
Lovi: 'a', 'ab', 'abc'
Ne lovi: '', 'aX', 'aXc', 'abcd'
Moj poskus, ki napacno ulovi 'aX':
r".[^X]?.?"
Lahko resim s for zanko, ampak sigurno obstaja kaj boljsega.
- spremenil: ozbolt ()
jype ::
Ne ulovi ga napačno: . ujame a, [^X]? ujame prazen niz, .? pa ujame X.
Vprašaj je nič ali ena ponovitev elementa.
Dvomim, da bo šlo drugače, kot z več regexi (druga dva seveda lahko skrčiš v enega s .? na koncu):
Aja, no, ali pa negative lookahead (prva pika matcha samo, če ji ne sledi X, druga in tretja pa poljubno):
^ in $ zato, ker je ? non-greedy in ne bo matchal, če mu ni treba.
Vprašaj je nič ali ena ponovitev elementa.
Dvomim, da bo šlo drugače, kot z več regexi (druga dva seveda lahko skrčiš v enega s .? na koncu):
r"^(.|.[^X]|.[^X].)$"
Aja, no, ali pa negative lookahead (prva pika matcha samo, če ji ne sledi X, druga in tretja pa poljubno):
r"^.(?!X).?.?$"
^ in $ zato, ker je ? non-greedy in ne bo matchal, če mu ni treba.
Zgodovina sprememb…
- spremenilo: jype ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Poskodovana word datotekaOddelek: Pomoč in nasveti | 1923 (1596) | fosil |
» | ASCII artOddelek: Sedem umetnosti | 1757 (1531) | McAjvar |
» | Regular expressionOddelek: Programiranje | 1899 (1326) | TESKAn |
» | Video na straniOddelek: Izdelava spletišč | 1312 (1135) | iNooby |