perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 19
Click for quality!




12.02.2012 / 03:44

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragRegexp, 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

-






-
-