Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Python - regulární výrazy

Zdravím,

při používání regulárních výrazů v jazyce Python pomocí re.search(), se se vyhledává první shoda zleva doprava.

Příklad

  import re
  retezec = "testovaci 123 retezec"
  index = re.search(r"\d", retezec).start()
  print(index)

Existuje neco podobného jako re.search(), ale vyhledávající první shodu od konce řetězce?

Díky.

Předmět Autor Datum
Pre tento konkrétny prípad môžeš napísať ten regulárny výraz tak, aby zachytil len poslednú číslicu…
los 12.04.2013 20:54
los
Dekuju za radu. Jestě bych se rád zeptal, jestli se dají používat regulární výrazy s funkcí find a…
Luk 12.04.2013 22:20
Luk
Nie, find a rfind sa nedajú používať s regulárnymi výrazmi. Iba s reťazcami. poslední
los 12.04.2013 22:23
los

Pre tento konkrétny prípad môžeš napísať ten regulárny výraz tak, aby zachytil len poslednú číslicu (napr. r"\d(?=[^\d]*$)", alebo r"\d(?!.*\d)").

Všeobecne by mohlo stačiť k tomu regulárnemu výrazu pridať zápis, aby sa za hľadaným vzorom nevyskytoval ďalší hľadaný vzor, t.j. orig + "(?!.*" + orig + ")".

Ďalšia možnosť je, prebehnúť všetky zhody a ponechať si tú poslednú:

import re
retezec = "testovaci 123 retezec"
for match in re.finditer(r"\d", retezec):
    pass
index = match.start()
print(index)

Dekuju za radu.

Jestě bych se rád zeptal, jestli se dají používat regulární výrazy s funkcí find a rfind

Příklad:

retezec = "ukazkovy123"
index = retezec.find(r"\d")
print(index)

V tomhle případě mi to však vrátí -1, tedy nic nenalezeno.

Zpět do poradny Odpovědět na původní otázku Nahoru