如何删除第一个字母前的所有非字母字符(字符串的R矢量)

时间:2015-09-24 11:45:11

标签: regex r

我有一个字符串向量:

 cities <- c("London", "001 London", "Stockholm", "002 Stockholm")

我需要删除第一个字母前面的每个字符串中的任何内容,以便我可以:

 cities <- c("London", "London", "Stockholm", "Stockholm")

我试过例如此

 cities <- sub("^.*?[a-zA-Z]", "", cities)

但是这也删除了第一个字母,我不想发生这种情况。

3 个答案:

答案 0 :(得分:3)

使用否定字符类来匹配开头存在的所有非字母字符。

cities <- sub("^[^a-zA-Z]*", "", cities)

使用捕获组捕获首字母字符。

cities <- sub("^.*?([a-zA-Z])", "\\1", cities)

答案 1 :(得分:3)

使用

cities <- c("London", "001 London", "Stockholm", "002 Stockholm")
gsub("^\\P{L}*", "", cities, perl=T)

请参阅IDEONE demo

^\\P{L}*正则表达式意味着:

  • ^ - 断言字符串的开头
  • \\P{L}* - 除字母外的0个或更多字符。

如果您的城市名称以Unicode字母开头,则此解决方案更可取。

答案 2 :(得分:0)

删除号码:

 gsub('\\d+','',cities)
 [1] "London"     " London"    "Stockholm"  " Stockholm"