正则表达式转换有点棘手的姓氏,名字,头衔

时间:2015-04-10 01:03:28

标签: regex

是否可以使用一个正则表达式转换

Doe, John C., Jr., M.D.
Doe, Jane, M.D.

阅读

John C. Doe Jr., M.D.
Jane Doe, M.D.

2 个答案:

答案 0 :(得分:0)

替换

^([^,]+),\s([^,]+),(?:(\s[^,]+),)?\s([^,]+)$

$2 $1$3, $4

DEMO

答案 1 :(得分:0)

Barmar的答案适用于指定的示例,但有一个可能更简单的解决方案应该满足我们的输入:

^([^,]+),\s([^,]+),(.*)$替换为$2 $1$3

我们将(?:(\s[^,]+),)?\s([^,]+)替换为更简单的(.*),以便在第一个名称后抓取所有标题(我们不关心这些标题中的内容的具体情况)。