私は複雑な正規表現が非常に苦手ですが、正しい方向に少しずつ進めていきたいです。後で完全な名前が使用されるときに、イニシャルを削除して一部の著者の名前を解析しようとしています。すべての例外をキャッチする「完璧な」ソリューションはおそらくないことはわかっていますが、「十分な」ソリューションを探しています。
入力例
C S Clive Staples Lewis
T H Terence Hanbury White
R Salvatore
George R R Martin
J R R John Ronald Reuel Tolkien
J K Rowling
理想的な出力
Clive Staples Lewis
Terence Hanbury White
R Salvatore
George R R Martin
John Ronald Reuel Tolkien
J K Rowling
これに沿った何か:$str = preg_replace('#(?:\s+\S{1,2})+\s+#',' ',$str);
これは明らかに単一の文字の最初のインスタンスがありませんが、それを変更すると、r salvatore の r と jk rowling の jk が削除されます。
洞察をありがとう。