![名前の最初の文字と姓全体を抽出する](https://rvso.com/image/1595497/%E5%90%8D%E5%89%8D%E3%81%AE%E6%9C%80%E5%88%9D%E3%81%AE%E6%96%87%E5%AD%97%E3%81%A8%E5%A7%93%E5%85%A8%E4%BD%93%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B.png)
正規表現を使用して、ユーザーの名の最初の文字と姓全体を取得する必要があります。現在使用しているコードは、名前が 2 つあるユーザーの場合はうまく機能しますが、3 つ目の名前が含まれている場合は機能しません。
現在私が持っているものは次のとおりです:^(.)[^ ]* (\w+)$
対象:
- トム・ジョーンズ → TJones。
以下の場合には機能しません:
- トム・スミス・ジョーンズ。TJones が返されるはずです。
さらに、姓に特殊文字を使用せず、アルファベット文字のみを使用できるようにしたいと思います。
更新: このコードは別の投稿で見つかりました (\w).*(\s+\w+)$
このコードは最初の文字と最後の単語を取得することはできますが、スペースは削除されません。
例: Tom Mike Andrew Jones -> TJones ではなく T Jones。
その後、これを (\w).*(\s+)(\w+)$ に更新したところ、問題なく動作しました。次に、たとえば Pierre-Louis のような姓の特殊文字を無視する方法を考えなければなりません。
正規表現の専門家の皆さん、特殊文字を無視する方法を知っていますか?
答え1
正規表現を次のように変更できます。
(\w).*\W+(\w+)$
単語以外の文字に一致する\s
user (大文字の W)の代わりに使用します。\W