Lieber Steffen,
naja, dann vielleicht so.
/m[^m]*$/
>
> Es wird doch das letzte "m" in der Zeichenkette gesucht, oder?
Nein! Die Vorgabe war:
> für alle 'm' denen kein weiteres 'm' folgt.
Und genau das kann man mit m[^m] umschreiben. Das war nicht falsch, ist aber nur in diesem Zusammenhang so lösbar.
> Mir ist die "!?" Syntax noch nicht bekannt.
Die gibt es auch so nicht. :-) Das Ausrufezeichen negiert das Folgende (sprich "!m" heißt "nicht-M"), das Fragezeichen \_davor\_ innerhalb einer neuen Klammer sucht vorwärtsgerichtet, ob es auch ja nicht auftaucht. /(?!m)/ Das ist die Schreibweise für negative lookahead (negatives Vorausschauen).
/m(?!inimal)/ matched "minimahl" und "minimarkt", da die folgende Zeichenkette nach dem ersten "m" \_nicht\_ "inimal" lautet, denn die würde dem lookahead passen, was sie aber wegen des Ausrufezeichens nicht darf.
Ich empfehle Dir das (englischsprachige) [Tutorial zu Regexen](http://www.regular-expressions.info/) zum weiteren Nachlesen.
Liebe Grüße aus [Ellwangen](http://www.ellwangen.de/),
Felix Riesterer.