frage zu regulären ausdrücken

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
roakin
User
Beiträge: 26
Registriert: Montag 30. April 2007, 09:31

ich will aus einem bild mittels re den alt text auslesen. allerdings schaffe ich es nicht mir nur text auszulesen ... momentan hab ich

Code: Alles auswählen

import re

p = re.compile('alt=(?:"|\'|)[a-zA-Z0-9]*(?:"|\'|)')
m = p.search('<img src="test.gif" alt="myAltTxt" />')
if m:
    print 'Match found: ', m.group()
else:
    print 'No match'
wie kann ich sagen, dass ich nur 'myAltTxt' haben will?
BlackJack

Ich würde das ja an BeautifulSoup verfüttern anstatt selber einen Parser dafür zu schreiben, aber folgendes funktioniert halbwegs:

Code: Alles auswählen

import re

def main():
    template = '<img src="test.gif" alt=%s width="42" />'
    tests = ('"O\'Reilly"', "'my alt txt'", 'myAltTxt')
    alt_re = re.compile(r'alt=(((?P<delim>["\'])(.*?)(?P=delim))|(\S+))')
    for test in tests:
        match = alt_re.search(template % test)
        if match:
            if match.group('delim') is not None:
                alt_value = match.group(4)
            else:
                alt_value = match.group(5)
            print 'Match found:', alt_value
        else:
            print 'No match'
Reguläre Ausdrücke können halt schnell etwas unleserlich werden.
roakin
User
Beiträge: 26
Registriert: Montag 30. April 2007, 09:31

das funktioniert wunderbar ... vielen dank ... das war echt eine riesen hilfe
Antworten