如何在R中使用正则表达式来提取人名

时间:2018-02-19 08:35:55

标签: r regex

我想从文本中提取名称字段,例如

name = "My name is John Smith"

应该返回 John Smith

我目前的代码是

grep(".^[A-Z][a-z]+\\s[A-Z][a-z]+", name, value = TRUE)

1 个答案:

答案 0 :(得分:4)

我们可以使用sub来捕获以大写字母开头的单词,后跟小写字母,然后是空格,后跟单词大写字母,小写字母后跟其他字符({{1 }}并替换为捕获组

的反向引用(.*
\\1

编辑:添加了@ DJack的推荐

数据

sub(".*([A-Z][a-z]+\\s[A-Z][a-z]+).*", "\\1", name)
#[1] "John Smith"