[英]R gsub( ) , Regular Expression
我有以下数据
Names[]
[1] John Simon is a great player
[2] Chi-Twi is from china
[3] O'Konnor works hard
[4] R.F is a swimmer
我只需要从所有这些行中提取名称并将其存储。 我尝试过这种方式。
[1] John Simon
[2] Chi-Twi
[3] O'Konnor
[4] R.F
names = gsub("(^[A-Z|a-z|.|-|']+[ ]+[A-Z|a-z|.|-|]+)[ ]+.*", "\\1",names)
有人可以帮我吗?
这是一个适用于此示例数据的正则表达式:
names = gsub("(^[A-Za-z]+[^A-Za-z][A-Za-z]+)", "\\1", names)
如果下划线是名字或姓氏中的有效字符,则可以将其缩短为:
names = gsub("(^\\w+\\W\\w+)", "\\1", names)
它只需要输入一个或多个字母,一个非字母,然后再输入一个或多个字母。
我在您的正则表达式中发现了一些错误:
[AZ|az|.|-|']+
实际上匹配AZ
, |
, az
, |
(再次) .
, |-|
(这是一个范围)和'
。 您确实想要[A-Za-z.\\\\-']+
。
无论如何,那是错误的,您不想在名字中包含点或破折号。
根据@nhahtdh的评论,您可以使用
sub("(^\\w+\\W\\w+).*", "\\1", Names)
# [1] "John Simon" "Chi-Twi" "O'Konnor" "R.F"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.