Siechfred: [Regex]Zeichenketten verbieten

Beitrag lesen

ABER: Sobald ein OR im Lookaround enthalten ist fängt PERL das Meckern an (darf keine dynamische Länge haben).

Das müsstest du vielleicht doch mal näher erklären.

Achso und das ganennte Beispiel würde ja sowieso nicht funktionieren, da ich nicht einen substring suche, der einen text nicht enthält sonder sicherstellen will, dass ein text keinen substring enthält...

Du hast entweder mein Beispiel oder ich dein Problem nicht verstanden. Mal angenommen, du hättest folgenden festgelegten Aufbau, die Strings können dabei unterschiedliche Längen aufweisen:

"String1-String2-String3-String4"

String 2 darf alles außer bestimmte Wörter sein. Dann sähe ein möglicher RegExp so aus:

/^String1-(?!(willichnicht|willichauchnicht)-).+?-String3$/

Nochmal ein Codeschnipsel zum Veranschaulichen:

while (<DATA>) {  
  chomp($_);  
  if ($_ =~ /^String1\-(?!(Foo|Blub|Laber)\-).+?\-String3\-String4$/ ) {  
    print "$.: $_ - matched\n";  
  }  
  else {  
    print "$.: $_ - not matched\n";  
  }  
}  
  
__DATA__  
String1-Brb-String3-String5  
String1-Laber-String3-String4  
String1-Rhabarber-String3-String4  
String1-Foobarz-String3-String4  
String1-Blub-String3-String4  
String1-Blubber-String3-String4

Ergibt:

1: String1-Brb-String3-String5 - not matched ("String5" nicht erlaubt)
2: String1-Laber-String3-String4 - not matched ("Laber" nicht erlaubt)
3: String1-Rhabarber-String3-String4 - matched
4: String1-Foobarz-String3-String4 - matched ("Foo" zwar nicht erlaubt, aber "Foobarz")
5: String1-Blub-String3-String4 - not matched ("Blub" nicht erlaubt)
6: String1-Blubber-String3-String4 - matched ("Blub" zwar nicht erlaubt, aber "Blubber")

Kommen wir einander näher?

Siechfred