S60-sovellus kysyy sanan joka kierroksella. Jos sana on annettu muodossa -l[numero]
, niin miten voin tarkistaa onko sana oikeasti annettu? Eli, jos sana on muotoa -lnumero
, niin tehdään jotain.
Tarkoititkohan numerolla numeroa vai lukua. Jos yhtä numeroa, ota plussa pois seuraavasta:
from re import compile num_re = compile(r'-l([0-9]+)') annettu = '-l23' match = num_re.match(annettu) if match: luku = int(match.group(1)) print 'Saatiin luku:', luku else: print 'Ei saatu lukua'
Jos Python-sovelluksessa käytetään samaa regexpiä toistuvasti, se kannattaa tehokkuussyistä luoda ohjelman alussa compilella, kuten yllä olen tehnyt. Silmukassa sitten vain kutsutaan saadun objektin match-metodia, kun halutaan testata syötettä.
Voit aivan perustiedoillakin tarkistaa tekstin. Seuraava funktio hyväksyy tekstit, joiden alussa on -l
ja tämän jälkeen yksi tai useampia numeroita.
def tarkista(sana): if len(sana) < 3: return False if sana[0:2] <> "-l": return False for i in sana[2:]: if not i in "0123456789": return False return True
Säännöllisistä lausekkeista kerrotaan Pythonin dokumentaatiossa ja Ohjelmointiputkan oppaassa. Lausekkeet ovat pääpiirteiltään samat kaikilla ohjelmointikielillä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.