Sto provando a far corrispondere una stringa (usando una regex Perl) solo se non inizia con "abc:" o "defg:", ma non riesco a capire come . Ho provato qualcosa di simileRegex corrispondente a più lookahead negativi
^(?:(?!abc:)|(?!defg:))
Sto provando a far corrispondere una stringa (usando una regex Perl) solo se non inizia con "abc:" o "defg:", ma non riesco a capire come . Ho provato qualcosa di simileRegex corrispondente a più lookahead negativi
^(?:(?!abc:)|(?!defg:))
... o avrebbe potuto cadere l'alternanza dall'espressione originale:
^(?:(?!abc:)(?!defg:))
I precedenti '\ b' sono ridondanti e OP non dice nulla su ciò che segue. – nhahtdh
questo farà il compito:
^(?!(defg|abc):).*
La prego di provare questo:
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+
uso questa espressione regolare. eviterà l'avvio della linea con "abc:" e "defg:" come desiderato.
Lookahead (?=foo)
, (?!foo)
e lookbehind (?<=)
, (?<!)
non consumano alcun carattere.
È possibile:
^(?!abc:)(?!defg:).*
o
^(?!defg:)(?!abc:).*
L'ordine di non fare la differenza.
che richiede qualsiasi stringa che non avvia abc: * o * non avvia defg :, che è una stringa qualsiasi – ysth