@@Gunnar Bittersmann:
Suchmuster mit lookahead oder lookbehind. Sowas gibt´s in [link:http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck#Theoretische_Grundlagen@title=regulären Ausdrücken] nicht.
Ich hol dazu mal noch etwas weiter aus:
Sei A ein regulärer Ausdruck. Laut der Definition regulärer Ausdrücke wäre A* auch ein regulärer Ausdruck. A? und A+ wären keine regulären Ausdrücke.
Führen wir noch folgende Schreibweisen ein:
(1) A? = ε | A
(2) A+ = A A*
(3) A{0} = ε
(4) A{n} = A A{n-1} n∈ℕ; n≥1
(5) A(n,} = A{n} A* n∈ℕ
(6) A{,n} = (A?){n} n∈ℕ
(7) A{m,n} = A{m} A{,n-m} m,n∈ℕ; m≤n
Sei a ein Zeichen des Alphabets, φ eine Auflistung von Zeichen (min. 1) des Alphabets, ψ die Auflistung aller nicht in φ enthaltener Zeichen des Alphabets, ω die Auflistung aller Zeichen des Alphabets. Dann führen wir noch folgende Schreibweisen ein:
(8) [] = ε
(9) [a] = a
(10) [aφ] = a | [φ]
(11) [^φ] = [ψ]
(12) . = [ω]
Die Einführung von [a-z] spar ich mir jetzt mal; dazu müsste man erstmal das Alphabet nicht als (ungeordnete) Menge definieren, sondern als geordnete Liste (coded character set).
Alle diese Schreibweisen bringen aber nichts qualitativ Neues. Sie lassen sich in die laut Definition erlaubte Schreibweise überführen.
Beispiel:
[abc]{2,3} = [abc]{2} [abc]{,1} nach (7)
= [abc] [abc]{1} [abc]?{1} nach (4) und (6)
= [abc] [abc] [abc]{0} [abc]? [abc]?{0} nach (4)
= [abc] [abc] [abc]? nach (3)
= [abc] [abc] (ε | [abc]) nach (1)
= (a | [bc]) (a | [bc]) (ε | (a | [bc])) nach (10)
= (a | b | [c]) (a | b | [c]) (ε | (a | b | [c])) nach (10)
= (a | b | c) (a | b | c) (ε | (a | b | c)) nach (9)
Nicht so aber bei look-around assertions: „Diese Konstrukte erweitern die regulären Ausdrücke um die Möglichkeit, kontextsensitive Bedingungen zu formulieren […]“ Kontextsensitiv, aber nicht regulär. (Chomsky-Hierarchie)
Solche Suchmuster sind keine regulären Ausdrücke. Man sollte sie also IMHO nicht so bezeichnen. Die englische Wikipedia geht auf dieses Problem ein.
„Aber wem erzähle ich das? Dem wissend zwinkernden? Wahrscheinlich doch nur dem Archiv.“ [at]
Live long and prosper, Gunnar
Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)