我有一个由分号分隔符分隔的字符串,格式为firstname lastname。
即
John Doe; R.J. Smith; Peter T. Thompson; Sabine Geiß
如何将这些名称重新排序为'lastname,firstname',最好使用RegEx?
Doe, John; Smith, R.J.; Thompson, Peter T.; Geiß, Sabine
答案 0 :(得分: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ß"
答案 1 :(得分:1)
假设没有后缀(即姓氏总是只是最后一个字),你(全局)替换
\s*([^\s;]+(?:\s+[^\s;]+)*)\s+([^\s;]+)\s*(?:;|$)
与
$2, $1