我有一个字符串向量:
cities <- c("London", "001 London", "Stockholm", "002 Stockholm")
我需要删除第一个字母前面的每个字符串中的任何内容,以便我可以:
cities <- c("London", "London", "Stockholm", "Stockholm")
我试过例如此
cities <- sub("^.*?[a-zA-Z]", "", cities)
但是这也删除了第一个字母,我不想发生这种情况。
答案 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"