Hi,
ich habe folgendes Pattern:
Das matcht so Sachen wie [br /] oder auch [br=wide/], gebraucht wird es für einen BBCode-Interpreter. Nun gibt es aber folgendes Problem:
Der Text
wird von obigem Regex wie folgt aufgeteilt:
der erste Treffer ist also viel zu lang, weil die öffnende Klammer des [h1] genommen wird und nicht die öffnende Klammer von [br/]. Da ich bereits den Gebrauch von reluctant quantifiers praktiziere (was mir hier nichts nutzt, weil von vorne nach hinten gematcht wird), fällt mir als Lösung nur ein, dem Pattern zu verbieten, "[" oder "]" zu matchen, ausgenommen letzteres wird von einem "/" eingeleitet. Aber wie bringe ich dem Pattern bei, dass diese Zeichen nirgends im Match auftauchen dürfen außer als erstes und letztes Zeichen?
mpG
Tobias
ich habe folgendes Pattern:
Code:
(\[[(.+?)(=(.+?))?\s?+/\])
Das matcht so Sachen wie [br /] oder auch [br=wide/], gebraucht wird es für einen BBCode-Interpreter. Nun gibt es aber folgendes Problem:
Der Text
[h1]Überschrift[/h1][br /]Satz 1[br /]Satz 2[br /][imp]Wichtiger Satz 3[/imp]
wird von obigem Regex wie folgt aufgeteilt:
- [h1]Überschrift[/h1][br /]
[br /]
[br /]
der erste Treffer ist also viel zu lang, weil die öffnende Klammer des [h1] genommen wird und nicht die öffnende Klammer von [br/]. Da ich bereits den Gebrauch von reluctant quantifiers praktiziere (was mir hier nichts nutzt, weil von vorne nach hinten gematcht wird), fällt mir als Lösung nur ein, dem Pattern zu verbieten, "[" oder "]" zu matchen, ausgenommen letzteres wird von einem "/" eingeleitet. Aber wie bringe ich dem Pattern bei, dass diese Zeichen nirgends im Match auftauchen dürfen außer als erstes und letztes Zeichen?
mpG
Tobias