【问题标题】:How to use stringr and regexp to remove spaces and digits from end of strings?如何使用 stringr 和 regexp 从字符串末尾删除空格和数字?
【发布时间】:2012-05-17 23:22:45
【问题描述】:

我需要在R 中编写一个我无法弄清楚的基本正则表达式。我要做的是从数据中删除数字和空格,使“Flagstaff 24”变成“Flagstaff”。

library(stringr)

data <- c("Flagstaff 24",  "Los Angeles 23", "Cleveland 29", "Cleveland 29",  "Seattle 22")    

但是,由于我的数字是一位数或两位数,我不能只修剪结尾。我尝试过的是以下不起作用的表达式:

str_split_fixed(data, ".\\d", 1)

我正试图围绕这些表达式结构思考!

【问题讨论】:

    标签: regex r


    【解决方案1】:

    您可以为此使用gsub()。 (不需要stringr 包。)

    gsub("\\s*\\d*$", "", data)
    [1] "Flagstaff"   "Los Angeles" "Cleveland"   "Cleveland"   "Seattle"  
    

    【讨论】:

    • 谢谢!为什么这个表达式忽略了洛杉矶的空间?我试图做的只是查看字符串的末尾,但似乎没有必要。
    • @celenius -- $ 是一个“锚点”,意思是“字符串的结尾”。所以这只会匹配和替换具有以下内容的字符序列: (1) 零个或多个空格字符; (b) 后跟零个或多个数字; (3) 紧随其后的是字符串的结尾。 “Los Angeles”中的空格(和字母字符)不匹配作为该正则表达式的一部分,因此不会被替换。有意义吗?
    • 啊,是的,非常有道理。感谢您的解释。
    • 或替代语法:gsub(" [[:digit:]]+$", "", data),但是是的,它是同一件事......
    猜你喜欢
    • 2015-10-10
    • 2017-03-15
    • 2023-01-04
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    相关资源
    最近更新 更多