[Python-de] RegEx Problem

werndt Stephan.Werndt at t-online.de
Sam Jan 8 07:56:20 CET 2005


Guten Morgen,

Diez B. Roggisch wrote:

>>Wie willst du die denn vorher ersetzen - dafuer schreibst du ja den Parser....
>>
>>
Ich denke, daß mit 'ersetzen' soetwas gemeint sein könnte:

_________________________________________

import re

test = """
ein text, worinnen bbcodes sich tummeln
[b][b]naja[u]fetter, unterstrichener text[/u][/b]
[/b][c][c]erschendebbes[/c][/c]summeln
[b][a][u]FETTER, UNTERSTRICHENER TEXT[/u]
[/a]ups[/b]mummeln rummeln[aeh]schrummeln[/aeh]
[v]very[v]deep[v]verschachtelt[v]indeed[/v], isnt't[/v]
it[/v]?[/v]
genuch jez
"""

def P(text, bbcodes = [], p = 
re.compile('(.*)(\[(?P<t>.+?)\](.*?)\[/(?P=t)\])(.*)', re.S)):
    x = '#~§@ß~°'
    def R(m):
        if ( m.group(2) ):
            bbcodes.insert( 0, ( m.group(3), re.sub( x, '[', m.group(2) 
), m.start(2) ) ) 
            P( m.group(1) + re.sub( '\[', x, m.group(2) ) + m.group(5), 
bbcodes )
    re.sub( p, R, text )
    if not len( bbcodes ): return ['nix da']
    return bbcodes
   
for i in P(test): print i
_________________________________________


gruß

werndt