|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
Regexp, der matcht, wenn Zeichenkette NICHT vorkommt
|
Seitenanfang |
| Hallo. Wie der Betreff schon sagt, suche ich nach einem Regexp, welcher erfolgreich ist, wenn mein Quellstring den Suchstring NICHT enthaelt. Konkret moechte ich, dass $string = "Dies ist ein String"; $string =~ m/(^Beispiel)/; mir true zurueckliefert. So funktioniert das natuerlich nicht. Ich kann die Logik leider nicht invertieren und auf =! ausweichen... (Wie) geht soetwas? Danke!
Datum: 29.08.2005-11:57

|
re: Regexp, der matcht, wenn Zeichenkette NICHT vorkommt
|
Seitenanfang |
| Würde es nicht reichen zu checken ob die Variable false ist? if ($string == false)
Datum: 29.08.2005-12:51

|
re: Regexp, der matcht, wenn Zeichenkette NICHT vorkommt
|
Seitenanfang |
| Hi, schau mal genau unter der Verwendung der RegEx im PerlBuch nach... if ( $szString !~ /Beispiel/ ) { ... } Gruß Ralf
Datum: 29.08.2005-22:24

|
re: Regexp, der matcht, wenn Zeichenkette NICHT vorkommt
|
Seitenanfang |
Wenn's nicht unbedingt ein RegEx sein muss, kannst Du auch einfach index() nehmen.if (index($string, $suchstring, 0) == -1) { # Ist nicht enthalten }
Datum: 30.08.2005-10:48

|
re: Regexp, der matcht, wenn Zeichenkette NICHT vorkommt
|
Seitenanfang |
| Hm.. genauer drueber nachgedacht wuerde ich sagen es geht nicht. Ausser mit !~ gibt es keine Moeglichkeit eine ganze RegEx umzukehren. Negative Lookahead bzw. Lookbehind scheidet aus, weil Du etwas brauchst womit Du den Lookahead "verankerst". /foo(?!bar)/ passt auf ein "foo" dem kein "bar" folgt. /(?!bar)/ passt aber immer, weil es im String immer eine Stelle gibt der kein "bar" folgt. Gleiches gilt fuer /.?(?!bar)/ Zeichenklassen kann man zwar umkehren aber die gehen nun mal nur auf ein Zeichen. +, * oder {n} dahinter nuetzt auch nix, denn es schliesst zunemhmend mehr Varianten aus je laenger der Suchstring wird. /[^ot]{4}/ schliesst "oooo", "otto", "toto" usw. aus. Und wie der Name Match-Operator fuer m// schon sagt, geht es darum auf Uebereinstimmungen zu pruefen, nicht auf Ungleichheiten...
Datum: 30.08.2005-11:28

|
re: Regexp, der matcht, wenn Zeichenkette NICHT vorkommt
|
Seitenanfang |
| Hallo, mir scheint das alle so aufwändig; was ist damit? unless ($string =~ m/Beispiel/) { #wenn kein matching } else { #wenn matching } Ciao Ingo
Datum: 30.08.2005-13:10

|
|

|

|

|
 |

|

|
|