0

我有一串由分号分隔符分隔的名称,格式为 firstname lastname。

IE

John Doe; R.J. Smith; Peter T. Thompson; Sabine Geiß

如何将这些名称重新排序为“姓氏,名字”,最好使用正则表达式?

Doe, John; Smith, R.J.; Thompson, Peter T.; Geiß, Sabine
4

2 回答 2

2

正则表达式将是:

/\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ß"
于 2013-07-22T18:08:00.830 回答
1

假设不存在后缀(姓氏始终只是最后一个单词),您将(全局)替换

\s*([^\s;]+(?:\s+[^\s;]+)*)\s+([^\s;]+)\s*(?:;|$)

$2, $1
于 2013-07-22T18:13:08.620 回答