我有以下字符串:
strings <- c("David, FC; Haramey, S; Devan, IA",
"Colin, Matthew J.; Haramey, S",
"Colin, Matthew")
如果我想要所有字符串的最后一个名字/名字,我可以使用以下内容:
sub(".*, ", "", strings)
[1] "IA" "S" "Matthew"
这会删除最后 ", "
但是,我仍然坚持如何获得第一个首字母/给定名称。我知道必须在第一个 ", "
之前删除所有内容,但之后我必须删除任何空格后的所有内容,分号,如果有的话。
要清楚我想要的输出是:
c("FC", "Matthew", "Matthew")
任何指针都会很棒。
摆弄我可以获得第一个姓氏gsub( " .*$", "", strings )
答案 0 :(得分:4)
您可以使用
> gsub( "^[^\\s,]+,\\s+([^;.\\s]+).*", "\\1", strings, perl=T)
[1] "FC" "Matthew" "Matthew"
请参阅regex demo
说明:
^
- 字符串开头[^\\s,]+
- 除空格或,
,
- 一个文字逗号\\s+
- 一个或多个空格([^;.\\s]+)
- 第1组匹配除;
,.
或空白.*
- 除换行符以外的任何字符零或以上如果要使用类似POSIX的表达式,请将字符类(\\s
内)中的[...]
替换为[:blank:]
(或[:space:]
):
gsub( "^[^[:blank:],]+,\\s+([^;.[:blank:]]+).*", "\\1", strings)