Ich versuche, eine Zeichenfolge (mit einem Perl Regex) nur wenn es nicht mit "abc:" oder "defg:" beginnt, aber ich kann nicht herausfinden, wie . Ich so etwas wieRegex mit mehreren negativen Lookahead
versucht haben^(?:(?!abc:)|(?!defg:))
Ich versuche, eine Zeichenfolge (mit einem Perl Regex) nur wenn es nicht mit "abc:" oder "defg:" beginnt, aber ich kann nicht herausfinden, wie . Ich so etwas wieRegex mit mehreren negativen Lookahead
versucht haben^(?:(?!abc:)|(?!defg:))
... oder könnte den Wechsel von der ursprünglichen Ausdruck fallen gelassen haben:
^(?:(?!abc:)(?!defg:))
Die vorhergehenden '\ b' sind redundant, und OP sagt nichts über was auch immer folgt. – nhahtdh
Dies wird die Aufgabe tun:
^(?!(defg|abc):).*
Könnten Sie bitte diese versuchen:
use strict;
use warnings;
use Cwd;
while(<DATA>)
{
my $line=$_;
print $line unless($line=~m/^(abc|defg*)/m);
}
__DATA__
ebc this is testing ebc
dbc this is testing dbc
defg this is testing defg
abc this is testing abc
defg this is testing defg
^(?!abc:|defg:)\s*\w+
diese regex Verwendung. Dies wird Zeilenanfang mit "abc:" und "defg:" wie Sie wollen vermeiden.
Die Look-Ahead (?=foo)
, (?!foo)
und Lookbehind (?<=)
, (?<!)
verbrauchen keine Zeichen.
Sie können:
^(?!abc:)(?!defg:).*
oder
^(?!defg:)(?!abc:).*
Der Auftrag macht keinen Unterschied machen.
fragt nach einer Zeichenfolge, die abc nicht startet: * oder * startet nicht defg :, das ist eine beliebige Zeichenfolge – ysth