RegEx用于在名字/姓氏之间添加逗号和空格

Zil*_*lle 1 regex string regex-group knime regex-greedy

我有一个姓氏和名字同时出现的名字列表:

BorisovaSvetlana A.; KimHak Joong; PuXiaotao; LiuHung-wen*
Run Code Online (Sandbox Code Playgroud)

我想在姓和名之间添加一个逗号和空格,以使输出为:

Borisova, Svetlana A.; Kim, Hak Joong; Pu, Xiaotao; Liu, Hung-wen*
Run Code Online (Sandbox Code Playgroud)

我在KNIME中使用一个String Manipulation节点,并且我想regexReplace($col1$, ,"")会使用它,也许使用[az]和[AZ]进行某种先行查找以直接在大写字母后写一个小写字母,但是我对regex不熟悉到目前为止,这就是我所拥有的。

我该如何解决这个问题?

Emm*_*mma 6

此RegEx可以帮助您设计适当的表达式以匹配所有输入:

([A-Z]{1}[a-z-]{1,})([A-Z]{1}[a-z-]{1,})
Run Code Online (Sandbox Code Playgroud)
  • 它有两个捕获组,一个用于姓氏,另一个用于姓氏。
  • 它与拉丁字符不匹配,如果您愿意,可以更改a-z\w
  • 你可以简单地创建一个字符串替换替换$1$2$1, $2
  • 如果需要,还可以向表达式添加其他边界。

代表着,

  • 一个大写字母,后跟一个或多个小写字母和破折号的名字,和姓氏的相同,您可以根据需要简单地在两组中更改这些边界。

在此处输入图片说明


编辑:

根据Pushpesh的建议,可以将该表达式简化为:

([A-Z][a-z-]+)([A-Z][a-z-]+)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明