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 TrueSää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.