Alexandra: komplexer regulärer Ausdruck

Servus,
leider bin ich total am Verzweifeln da ich es seit Tagen nicht hinbekomme folgenden reg. Ausdruck hinzubekommen.
Er hat in Worten ausgedrückt folgendes Muster:
-vor einem bestimmten Wort ('def') können 0 bis 2 Wörter stehen.[?]
-keines dieser voranstehenden Wörter darf 'tst' oder 'tzt' heißen[?]
-dann kommt also das gegebene Wort: 'def'
-nachfolgend soll alles ermittelt/ausgelesen/gematcht werden bis zum nächsten Punkt. den geeigneten Regexp hierfür habe ich bereits...

Die mit [?] versehenen Angaben bekomme ich einfach nicht hin. Ich hoffe, die Beschreibung ist eindeutig und Ihr seid in der Lage und Stimmung mir hierbei zu helfen. Denn ich schaffs einfach nicht. Hab schon versucht mit <!? uvm...
Danke

  1. Hallo,

    -vor einem bestimmten Wort ('def') können 0 bis 2 Wörter stehen.[?]
    -keines dieser voranstehenden Wörter darf 'tst' oder 'tzt' heißen[?]
    -dann kommt also das gegebene Wort: 'def'
    -nachfolgend soll alles ermittelt/ausgelesen/gematcht werden bis zum nächsten Punkt. den geeigneten Regexp hierfür habe ich bereits...

    Wenn ich dich richtig verstanden habe, dann dürfte nur

    'foo bar def string' und 'bar foo def string'

    in meinem Beispiel erkannt werden.

      
    #!/usr/local/bin/perl -w  
    use strict;  
      
    my @string = ('tst tzt def string','foo tzt def string','foo tst def string','tzt bar def string','tst bar def string','foo bar def string','bar foo def string');  
      
    foreach (@string) {  
       next unless /^([a-su-z][a-rt-x][a-su-z]\s*[a-su-z][a-rt-x][a-su-z])\s*def\s*(.+)$/;  
       print "$2\n";  
    }  
    
    

    Greez,
    opi

    --
    Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|