我有以下看起來像這樣的資料:
my_data = c("red A1B 5L2 101", "blue A1C 5L8 10872", "Green A1D 5L5 100003" )
從每個字串的右側開始,我想洗掉數字以及數字前的空格。
最終結果看起來像這樣:
[1] "red A1B 5L2" "blue A1C 5L8" "Green A1D 5L5"
我知道每個字串中都有一個正則運算式模式,格式如下:'(([A-Z] ?[0-9]){3})|.', '\\1'
因此,我想確定此正則運算式模式結束的位置和字串結束的位置 - 然后我可以洗掉這兩個位置之間的空格并獲得所需的結果。
我發現此鏈接顯示了如何洗掉出現在特定模式左側或右側的字串中的所有字符(https://datascience.stackexchange.com/questions/8922/removing-strings-after-a-certain -給定文本中的字符)。我嘗試將此處提供的邏輯應用于我的示例:
gsub("(([A-Z] ?[0-9]){3})|.', '\\1.*","",my_data)
但這會產生相反的結果!
[1] "red 101" "blue 10872" "Green 100003"
有人可以告訴我如何解決這個問題嗎?
uj5u.com熱心網友回復:
我們可以sub()在這里使用:
my_data <- c("red A1B 5L2 101", "blue A1C 5L8 10872", "Green A1D 5L5 100003" )
output <- sub("\\s \\d $", "", my_data)
output
[1] "red A1B 5L2" "blue A1C 5L8" "Green A1D 5L5"
此處使用的正則運算式模式是\s \d $匹配一個或多個空白字符后跟字串末尾的一個或多個數字。
uj5u.com熱心網友回復:
使用trimws于base R
trimws(my_data, whitespace = "\\s \\S ")
[1] "red A1B 5L2" "blue A1C 5L8" "Green A1D 5L5"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/536395.html
標籤:r正则表达式细绳数据操作
