Ich versuche eine Regex zu schreiben, um den Nachnamen einer Person zu erhalten.Google Apps Script Regulärer Ausdruck, um den Nachnamen einer Person zu erhalten
var name = "My Name";
var regExp = new RegExp("\s[a-z]||[A-Z]*");
var lastName = regExp(name);
Logger.log(lastName);
Wenn ich das richtig verstanden \s
sollte den weißen Raum zwischen My
und Name
finden, [a-z]||[A-Z]
würde den nächsten Brief bekommen, dann *
würde den Rest bekommen. Ich würde einen Tipp schätzen, wenn jemand helfen könnte.
Danke für die Alternativen. Sehr hilfreich. Nur eine kurze Frage über die Regex. Wenn ich es richtig verstehe: () Klammern bedeuten, diese zuerst auszuwerten ?: bedeutet nicht in die Regex aufnehmen \ s ist Leerraum Was ist der Zweck der zusätzlichen "\"? – user1682683
Die '()' in '([a-z] +)' ist eigentlich für [Gruppierung] (http://www.regular-expressions.info/brackets.html). Es erlaubt uns, das angepasste Teil später wieder zu verwenden. '(? :)' (die '()' sind hier obligatorisch) bedeutet das Gegenteil, nicht diese Gruppe, verwenden Sie einfach die '()' als reguläre '()', nützlich für die Anwendung von Operatoren auf mehrere Ausdrücke (wie in '(\ s \ w) +', '(\ s \ w)' wäre eine Gruppe. In '(?: \ s \ w) +' ist es nicht.). Das zusätzliche '\ 'ist notwendig, weil Ihre Regex mit dem' RegExp'-Konstruktor deklariert wurde und eine Zeichenkette als Parameter erhält. Daher das Bedürfnis nach '\' als '\\' zu entkommen. Lass es mich wissen, wenn es klar ist! – acdcjunior