正则表达式和str_remove_all in R-仅当满足多个条件时才删除字
我正在尝试根据以下条件删除国家/地区名称的所有实例:正则表达式和str_remove_all in R-仅当满足多个条件时才删除字,r,regex,R,Regex,我正在尝试根据以下条件删除国家/地区名称的所有实例: 国家名称不在字符串开头 国家/地区名称不在“of”之后 所以如果我用一个虚构的字符串: 澳大利亚国民银行澳大利亚银行 我只想删除粗体突出显示的澳大利亚实例 我使用str_remove_all将折叠的国家名称字符串传递给公司名称向量 country <- data.frame(name = c("Australia", "Singapore", "Malaysia")) %>% mutate(name_regex = paste0(
country <- data.frame(name = c("Australia", "Singapore", "Malaysia")) %>%
mutate(name_regex = paste0("((?<!^)\\b", name, "\\b", "|(?<!of\\s)\\b", name, "\\b)"))
country_remove <- str_c(country$name_regex, collapse = "|")
str_remove_all(x, regex(country_remove, ignore_case = T))
country%
mutate(name_regex=paste0)(((?您应该像这样构建正则表达式:
country <- data.frame(name = c("Australia", "Singapore", "Malaysia"))
name_regex <- paste0("\\b(?<!of\\s)(?<!^)(?:", paste(country$name, collapse="|"), ")\\b")
s <- "Australia National Australia Bank of Australia"
str_remove_all(s, regex(name_regex, ignore_case=TRUE))
## => [1] "Australia National Bank of Australia"
国家
这个图案看起来像
\b(?<!of\s)(?<!^)(?:Australia|Singapore|Malaysia)\b
\b(?)?
看
详细信息
\b
-单词边界
(?-no的当前位置左侧不允许有空格
(?-不允许在当前位置开始字符串位置
(?:澳大利亚|新加坡|马来西亚)
-任何替代品
\b
-单词边界
生成数据帧的代码不起作用。能否将您的数据作为dput
共享?@WiktorStribiż新解决方案非常完美。非常感谢。
\b(?<!of\s)(?<!^)(?:Australia|Singapore|Malaysia)\b