Hallo levu!
Auch wenn die regex-losen Lösungen, wie von Struppi und Beat vorzuziehen sind, hat's mich mal gejuckt...
Der Regexp, der mir spontan einfallen würde, wäre /[1]*@[^@]*$/
Wenn Du ihn auch »spontan« getestet hättest, hättest Du festgestellt, dass der Regex nicht matcht. Hier mit Perl:
my @strings = ();
$strings[0] = 'Isch abe gar kein Arobas';
$strings[1] = 'Ich enthalte genau ein @-Zeichen';
$strings[2] = 'Ich enthalte hier ein @ und hier noch ein @-Zeichen';
$strings[3] = 'Ich enthalte ein doppeltes @@ irgendwo in der Mitte';
for (@strings) {
print 'Regex 1: @ gefunden in: ', $_, "\n" if /^[@]*@[^@]*$/;
}
Ausgabe: Gar keine
Dagegen:
my @strings = ();
$strings[0] = 'Isch abe gar kein Arobas';
$strings[1] = 'Ich enthalte genau ein @-Zeichen';
$strings[2] = 'Ich enthalte hier ein @ und hier noch ein @-Zeichen';
$strings[3] = 'Ich enthalte ein doppeltes @@ irgendwo in der Mitte';
for (@strings) {
print 'Regex 2: @ gefunden in: ', $_, "\n" if /@/ and !/(@).*?\1/;
}
Ausgabe:
Regex 2: @ gefunden in: Ich enthalte genau ein @-Zeichen
Allerdings gelingt es mir nicht, einen einzigen Ausdruck aus »if match and not match« zu machen. Da hoffe ich auf die Lösung eines Regexperten (wow, geile Wortkonstruktion, nicht wahr? *g*).
print 'Regex 3: @ gefunden in: ', $_, "\n" if /(?<!@)@(?!@).*?(?!@)/;
Obiges ignoriert zwar den String mit doppelten @, matcht aber beim dritten String ($strings[2])...
Viele Grüße aus Frankfurt/Main,
Patrick
_ - jenseits vom delirium - _
Diblom [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
@ ↩︎