[Python] Regular Expression

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bl4ckviper
  • Registratie: Mei 2002
  • Laatst online: 06-08 00:09
Hallo,

Ik heb in phyton de volgende regular expression:

code:
1
2
3
4
5
6
7
8
def getFilters (responseString):
    p = re.compile('page:basePage:multCol:zkFilt:0:fopid:([^":]+):fopiid:([^":]+):fopilnk')
    values = re.findall(p, responseString)
    filters = []
    for value in values:
        filters.append(value)
    print(filters)
    return random.choice(filters)


Ik heb deze regex getest via regexplanet en krijg bij de find() daar alle juiste resultaten.

Alleen krijg ik uit de twee groepen in de values en dus in de array.

Weet iemand hoe ik de gehele string kan krijgen? dus incl de 2 groups?

vanuit de zoektocht kwam ik dit tegen:
If the regex contains one or more capturing groups, re.findall() returns an array of tuples, with each tuple containing text matched by all the capturing groups. The overall regex match is not included in the tuple.
En dat laatste wil ik dus eigenlijk hebben.




Opgelost:

Je moet een extra groep aanmaken dan krijg je dus een array met daarin arrays terug die de 3 groepen bevat.

dan kan ik die eruit halen en in mijn eigen lijst zetten.

Python:
1
2
3
4
5
6
7
def getFilters (responseString):
    p = re.compile('(page:basePage:multCol:zkFilt:0:fopid:([^":]+):fopiid:([^":]+):fopilnk)')
    values = re.findall(p, responseString)
    filters = []
    for value in values:
        filters.append(value[0])
    return random.choice(filters)

[ Voor 40% gewijzigd door Bl4ckviper op 07-01-2010 10:48 ]

Be fast .... Be furious....


Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Je kunt misschien beter een voorbeeld geven van wat je wil matchen?

Rustacean


Acties:
  • 0 Henk 'm!

  • Bl4ckviper
  • Registratie: Mei 2002
  • Laatst online: 06-08 00:09
Tis al gefixt..

Wat ik wou matchen was dus alle voorkomens van page:basePage:multCol:zkFilt:0:fopid:([^":]+):fopiid:([^":]+):fopilnk dit is een event string die ik in een load test random kan toevoegen dan (er staan meerdere ineen response pagina wat de input is voor de functie)

de 2 groepen kan van alles staan dat zijn gegenereerde id's bij t renderen van de pagina.

zoals beschreven gaf de functie findall dus enkel de 2 groepen terug en niet de gehele match hier voor moest ik deze ook groeperen dus met ( ..) eromheen.

Be fast .... Be furious....