我有一个用分号分隔符以名字姓氏格式分隔的名称的字符串。使用Regex重新排列由分号分隔的字符串内容?
即
John Doe; R.J. Smith; Peter T. Thompson; Sabine Geiß
如何将一个重新排序这些名称为 '姓,名',优选地使用正则表达式?
Doe, John; Smith, R.J.; Thompson, Peter T.; Geiß, Sabine
我有一个用分号分隔符以名字姓氏格式分隔的名称的字符串。使用Regex重新排列由分号分隔的字符串内容?
即
John Doe; R.J. Smith; Peter T. Thompson; Sabine Geiß
如何将一个重新排序这些名称为 '姓,名',优选地使用正则表达式?
Doe, John; Smith, R.J.; Thompson, Peter T.; Geiß, Sabine
假设没有后缀存在(即姓氏总是只有最后一个字) ,你会(全球)取代
\s*([^\s;]+(?:\s+[^\s;]+)*)\s+([^\s;]+)\s*(?:;|$)
以
$2, $1
这不适用于字符串中的姓氏,因为它后面没有';'。 – Barmar
@Barmar - 好点。固定。 –
正则表达式是:
/\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ß"
它没有翻转姓氏。 – Barmar
用什么语言? – Barmar
对不起,我对Python更熟悉,但可以适应php或其他。 – Brad
一般来说,很难知道“姓氏”是什么。 (例如尝试用西班牙语的名字)。 http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ – rici