Regulärer Ausdruck gesucht

guliver

Grünschnabel
Hallo,

ich habe eine Liste von EMail-Adressen. Bei diesen muss ich prüfen, ob ein bestimmer Ausdruck nicht vorhanden ist.

Ausdruck: .*@test.(de|net|com.au|fr)

Also alle Mails, die auf @test.de, @test.net usw. enden, dürfen nicht in der Treffermenge liegen.

Ich schaffe es einfach nicht, den obigen Ausdruck zu negieren.
Intuitiv würde man meinen, dass man mit
.*@[^test.(de|net|com.au|fr)].*
weiterkommt. Bei eckig geklammerten Audrücken (z.B.: [ea]) sucht er jedoch nach einem e oder a.
 
Hi.

Das läßt sich mit regulären Ausdrücken nicht realisieren.

Es gibt allerdings erweiterte reguläre Ausdrücke mit denen das möglich ist; was benutzt du denn für ein Programm/Programmiersprache?

Du kannst andererseits aber auch einfach den Test negieren (anstatt if regex.match halt if not regex.match)

Gruß
 
PCRE = Perl Compatible Regular Expressions.

perlre Manpage hat gesagt.:
Extended Patterns

Perl also defines a consistent extension syntax for features not found in standard tools like awk and lex. The syntax is a pair of parentheses with a question mark as the first thing within the parentheses. The character after the question mark indicates the extension.

Standard reg. Ausdrücke unterstützen nur Quantifizierung, Gruppierung, Zeichenklassen (mit Negation) und Alternativen.

Gruß
 
Sind Lookahead- und Lookbehind-Assertionen nicht nur mit festen Zeichenlängen möglich?
 
Vielen Dank für Eure Hilfe.

Der Reguläre Ausdruck funktioniert (leicht abgeändert). Ich benötige das für eine Gruppenfunktion von Bugzilla. Zum Glück unterstützt dieser erweiterte Ausdrücke.

Das hat mir einiges an Arbeit und Codeänderungen erspart.

Danke nochmal,
Gruß
 
Zurück