用于在 first/last 名称之间添加逗号和 space 的正则表达式
RegEx for adding a comma and space in between first/last names
我有一个姓名列表,其中姓氏和名字一起出现:
BorisovaSvetlana A.; KimHak Joong; PuXiaotao; LiuHung-wen*
我想在姓氏和名字之间添加逗号和 space,输出为:
Borisova, Svetlana A.; Kim, Hak Joong; Pu, Xiaotao; Liu, Hung-wen*
我在 KNIME 中使用一个字符串操作节点,我认为 regexReplace($col1$, ,"")
会被使用,并且可能会使用 [a-z] 和 [A-Z] 来查找小写字母直接跟在 a 后面的一些前瞻性实例大写字母,但我是正则表达式的新手,所以到目前为止我只有这些。
如何解决这个问题?
您需要的正则表达式是
([a-z])([A-Z])
第 1 个捕获组 ([a-z])
匹配下面列表中的单个字符 [a-z]
a-z 介于 a(索引 97)和 z(索引 122)之间的单个字符(区分大小写)
第 2 个捕获组 ([A-Z])
匹配下面列表中的单个字符 [A-Z]
A-Z 介于 A(索引 65)和 Z(索引 90)之间的单个字符(区分大小写)
This RegEx 可能会帮助您设计一个合适的表达式来匹配您的所有输入:
([A-Z]{1}[a-z-]{1,})([A-Z]{1}[a-z-]{1,})
- 它有两个捕获组,一个用于名字,另一个用于姓氏。
- 它不匹配拉丁字符,如果您愿意,可以将
a-z
更改为 \w
。
- 您可以简单地创建一个字符串替换,将
</code> 替换为 <code>,
。
- 如有必要,您还可以为表达式添加额外的边界。
也就是说,
- 名字一个大写字母后跟一个或多个小写字母和破折号,姓氏也是如此,您可以根据需要简单地更改两组内的这些边界。
编辑:
基于Pushpesh's advice, it can be much simplified to this expression:
([A-Z][a-z-]+)([A-Z][a-z-]+)
字符串操作节点中的 KNIME 语法应如下所示:
regexReplace($col1$,"([A-Z][a-z-]+)([A-Z][a-z-]+)" ,", ")
你的例子对我有用。正则表达式可以类似,因为它在回放中与所有 3 个 received/suggested 一起工作。
我有一个姓名列表,其中姓氏和名字一起出现:
BorisovaSvetlana A.; KimHak Joong; PuXiaotao; LiuHung-wen*
我想在姓氏和名字之间添加逗号和 space,输出为:
Borisova, Svetlana A.; Kim, Hak Joong; Pu, Xiaotao; Liu, Hung-wen*
我在 KNIME 中使用一个字符串操作节点,我认为 regexReplace($col1$, ,"")
会被使用,并且可能会使用 [a-z] 和 [A-Z] 来查找小写字母直接跟在 a 后面的一些前瞻性实例大写字母,但我是正则表达式的新手,所以到目前为止我只有这些。
如何解决这个问题?
您需要的正则表达式是
([a-z])([A-Z])
第 1 个捕获组 ([a-z]) 匹配下面列表中的单个字符 [a-z] a-z 介于 a(索引 97)和 z(索引 122)之间的单个字符(区分大小写)
第 2 个捕获组 ([A-Z]) 匹配下面列表中的单个字符 [A-Z] A-Z 介于 A(索引 65)和 Z(索引 90)之间的单个字符(区分大小写)
This RegEx 可能会帮助您设计一个合适的表达式来匹配您的所有输入:
([A-Z]{1}[a-z-]{1,})([A-Z]{1}[a-z-]{1,})
- 它有两个捕获组,一个用于名字,另一个用于姓氏。
- 它不匹配拉丁字符,如果您愿意,可以将
a-z
更改为\w
。 - 您可以简单地创建一个字符串替换,将
</code> 替换为 <code>,
。 - 如有必要,您还可以为表达式添加额外的边界。
也就是说,
- 名字一个大写字母后跟一个或多个小写字母和破折号,姓氏也是如此,您可以根据需要简单地更改两组内的这些边界。
编辑:
基于Pushpesh's advice, it can be much simplified to this expression:
([A-Z][a-z-]+)([A-Z][a-z-]+)
字符串操作节点中的 KNIME 语法应如下所示:
regexReplace($col1$,"([A-Z][a-z-]+)([A-Z][a-z-]+)" ,", ")
你的例子对我有用。正则表达式可以类似,因为它在回放中与所有 3 个 received/suggested 一起工作。