名前の最初の文字と姓全体を抽出する

名前の最初の文字と姓全体を抽出する

正規表現を使用して、ユーザーの名の最初の文字と姓全体を取得する必要があります。現在使用しているコードは、名前が 2 つあるユーザーの場合はうまく機能しますが、3 つ目の名前が含まれている場合は機能しません。

現在私が持っているものは次のとおりです:^(.)[^ ]* (\w+)$

対象:

  • トム・ジョーンズ → TJones。

以下の場合には機能しません:

  • トム・スミス・ジョーンズ。TJones が返されるはずです。

さらに、姓に特殊文字を使用せず、アルファベット文字のみを使用できるようにしたいと思います。

更新: このコードは別の投稿で見つかりました (\w).*(\s+\w+)$

このコードは最初の文字と最後の単語を取得することはできますが、スペースは削除されません。

例: Tom Mike Andrew Jones -> TJones ではなく T Jones。

その後、これを (\w).*(\s+)(\w+)$ に更新したところ、問題なく動作しました。次に、たとえば Pierre-Louis のような姓の特殊文字を無視する方法を考えなければなりません。

正規表現の専門家の皆さん、特殊文字を無視する方法を知っていますか?

答え1

正規表現を次のように変更できます。

(\w).*\W+(\w+)$

単語以外の文字に一致する\suser (大文字の W)の代わりに使用します。\W

関連情報