首页 > 解决方案 > 在以大写字母开头的第一个单词后添加逗号

问题描述

正如标题所说。我有一堆名字,我需要在第一个以大写字母开头的单词后添加一个逗号。

一个例子:

txt <- c( "de Van-Smith J", "van der Smith G.H.", "de Smith JW", "Smith JW")

结果应该是:

[1] "de Van-Smith, J" "van der Smith, G.H." "de Smith, JW" "Smith, JW"  

我主要一直在尝试使用gsub()and stringr::str_replace(),但我正在努力使用正则表达式,任何建议都将不胜感激。

标签: rregexstringrstringi

解决方案


您可以使用 -

sub("([A-Z][\\w-]+)", "\\1,", txt, perl = TRUE)

#[1] "de Van-Smith, J"   "van der Smith, G.H." "de Smith, JW"       "Smith, JW"

where([A-Z][\\w-]+)捕获以大写字母开头并且后面有-或任意数量的单词字符的单词。


推荐阅读