我有一串由分号分隔符分隔的名称,格式为 firstname lastname。
IE
John Doe; R.J. Smith; Peter T. Thompson; Sabine Geiß
如何将这些名称重新排序为“姓氏,名字”,最好使用正则表达式?
Doe, John; Smith, R.J.; Thompson, Peter T.; Geiß, Sabine
正则表达式将是:
/\s?([\w.\s]+)\s([\w.]+);/g
这将匹配第一个和第二个单词,然后是;
.
要在(例如)JavaScript 中实现您想要的:
your_string.replace(/\s?([\w.\s]+)\s([\w.]+);/g, "$2, $1")
例子:
"John Doe; R.J. Smith; Peter T. Thompson; Sabine Geiß".replace(/\s?([\w.\s]+)\s([\w.]+);/g, " $2, $1;")
" Doe, John; Smith, R.J.; Thompson, Peter T.; Sabine Geiß"
假设不存在后缀(即姓氏始终只是最后一个单词),您将(全局)替换
\s*([^\s;]+(?:\s+[^\s;]+)*)\s+([^\s;]+)\s*(?:;|$)
和
$2, $1