我有如下数据:
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-character-in-a-given-text)左侧或右侧的所有字符。我尝试将这里提供的逻辑应用到我的示例中:
gsub("(([A-Z] ?[0-9]){3})|.', '\\1.*","",my_data)
但这却产生了相反的结果!
[1] "red 101" "blue 10872" "Green 100003"
有人能告诉我如何解决这个问题吗?
2条答案
按热度按时间f1tvaqid1#
我们可以在这里使用
sub()
:这里使用的正则表达式模式是
\s+\d+$
,它匹配字符串末尾的一个或多个空格字符,后跟一个或多个数字。pu3pd22g2#
在
base R
中使用trimws