我有一个姓氏和名字同时出现的名字列表:
BorisovaSvetlana A.; KimHak Joong; PuXiaotao; LiuHung-wen*
我想在姓和名之间添加一个逗号和空格,以使输出为:
Borisova, Svetlana A.; Kim, Hak Joong; Pu, Xiaotao; Liu, Hung-wen*
我在KNIME中使用String Manipulation节点,并且我认为将使用regexReplace($col1$, ,"")
,并且可能使用[az]和[AZ]进行某种先行查找以查找小写的直接字母和大写字母之后的情况,但是我是regex的新手,所以到目前为止,这还只是我的全部。
如何解决此问题?
答案 0 :(得分:5)
This RegEx可以帮助您设计合适的表达式以匹配所有输入:
([A-Z]{1}[a-z-]{1,})([A-Z]{1}[a-z-]{1,})
a-z
更改为\w
。$1$2
替换为$1, $2
。 这意味着
根据Pushpesh的建议,可以将其简化为this expression:
([A-Z][a-z-]+)([A-Z][a-z-]+)
答案 1 :(得分:2)
“字符串操作”节点中KNIME中的语法应为:
regexReplace($col1$,"([A-Z][a-z-]+)([A-Z][a-z-]+)" ,"$1, $2")
以您的榜样为我工作。正则表达式可以与在重放中收到/建议的所有3个建议一起工作时类似。
答案 2 :(得分:1)
您需要的正则表达式是
([a-z])([A-Z])
第一捕获组([a-z]) 匹配[a-z]下面列表中存在的单个字符 a-z介于(索引97)和z(索引122)之间的单个字符(区分大小写)
第二个捕获组([A-Z]) 匹配[A-Z]下列表中存在的单个字符 A-Z是介于A(索引65)和Z(索引90)(区分大小写)之间的单个字符