[英]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.