![Extrahieren des ersten Buchstabens eines Namens und des gesamten Nachnamens](https://rvso.com/image/1595497/Extrahieren%20des%20ersten%20Buchstabens%20eines%20Namens%20und%20des%20gesamten%20Nachnamens.png)
Ich muss Regex verwenden, um den ersten Buchstaben des Vornamens eines Benutzers und auch den gesamten Nachnamen abzurufen. Was ich derzeit habe, funktioniert gut für Benutzer mit zwei Namen, aber der Code funktioniert nicht, wenn ein dritter Name enthalten ist.
Das habe ich derzeit:^(.)[^ ]* (\w+)$
Funktioniert für:
- Tom Jones → TJones.
Funktioniert nicht für:
- Tom Smith Jones. Es sollte TJones zurückgeben.
Darüber hinaus möchte ich in der Lage sein, alle Sonderzeichen im Nachnamen auszuschließen – es sollten nur alphabetische Zeichen sein.
UPDATE: habe diesen Code in einem anderen Beitrag gefunden (\w).*(\s+\w+)$
Dieser Code schafft es, das erste Zeichen und das letzte Wort abzurufen, entfernt aber nicht das Leerzeichen.
Beispiel: Tom Mike Andrew Jones -> T Jones statt TJones.
Ich habe das dann auf (\w).*(\s+)(\w+)$ aktualisiert und das funktioniert einwandfrei. Jetzt muss ich noch herausfinden, wie ich Sonderzeichen für Nachnamen wie zum Beispiel Pierre-Louis ignorieren kann.
Kennt einer von euch Regex-Experten eine Möglichkeit, die Sonderzeichen zu ignorieren?
Antwort1
Sie können den regulären Ausdruck wie folgt ändern:
(\w).*\W+(\w+)$
anstelle von \s
„user“ \W
(großes W), das mit allen Nicht-Wort-Zeichen übereinstimmt.