Hm, also '( not' sollte nicht gefunden werden.
Sieht man auch in meinem Beispiel.
Wenn man in dem innersten OR angekommen ist und da noch ein 't' kommt, muss zwangsweise noch ein 'validchar' folgen. Sprich '( notx' und das soll wieder erkannt werden, richtig?
'( not' sollte so nicht herleitbar sein.
Übrigens, wenn du auch mit lex/flex arbeitest, geht das ganze einfacher.
Die Regeln...
Code:
"("" "*not
"("" "*{validchar}+
... sollten funktionieren.
In der oberen Regel macht man nichts und in der unteren sollten dann alle anderen Wörter gefunden werden.
Wenn ich's mir recht überlege, könnte man das auch in anderen Sprachen mit RegEx so lösen.
Du suchst erst nach "( not" und wenn du das nicht gefunden hast, suchst du "( xyz".
Weiß jetzt aber nicht, in welchem Kontext du den RegEx brauchst.
/edit
Mir fällt grad noch ein, dass ich bei den Ausdrück NotN/O/T auch die großen Buchstaben rausgeschmissen habe.
Entweder man packt sie wieder rein oder man sollte im eigentlichen Ausdruck das "n", "o", "t" ersetzen durch [nN], [oO], [tT].
Dann wird auch '( nOt' u.ä. rausgefiltert.