Seite 1 von 1

frage zu regulären ausdrücken

Verfasst: Dienstag 8. Mai 2007, 11:00
von roakin
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?

Verfasst: Dienstag 8. Mai 2007, 13:02
von 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.

Verfasst: Mittwoch 9. Mai 2007, 10:12
von roakin
das funktioniert wunderbar ... vielen dank ... das war echt eine riesen hilfe