首页 > 解决方案 > 我想在 R 中编写一个正则表达式来删除包含数字的字符串的所有单词

问题描述

例如:

x<-"Saint  A/74/PV.46 12/12/2019 4/66 19-40538 Lucia"

应该给我“圣卢西亚”。

我试过

trimws(gsub("\\w*[0-9]+\\w*\\s*", "", x))

这给了我

Saint  A//PV.///-Lucia

任何帮助将不胜感激。

标签: rregexgsubstringr

解决方案


我们可以gsub用来匹配字母、数字,从单词边界 ( \\b) 到下一个,并替换为空白 ( "")

gsub("\\s{2,}", " ", gsub("\\b[A-Z/0-9.-]+\\b", "", x))
#[1] "Saint Lucia"

或使用str_extract

library(stringr)
str_c(str_extract_all(x, "(?<= |^)[[:alpha:]]+(?= |$)")[[1]], collapse = " ")
#[1] "Saint Lucia"

推荐阅读