R语言如何实现仅替换未紧跟在指定单词后的目标字符串
R 匹配替换未紧跟指定单词的目标字符串方法
你需要的规则可以通过Perl兼容正则的负向回顾断言实现,核心逻辑是在匹配目标单词the前,校验前面的内容不等于指定的of (of加空格)。
可直接运行的实现代码
vec <- c("time of the day", "word of the day", "time the day") # 启用perl正则支持,(?<!of )为负向回顾断言,匹配前面不是"of "的the result <- gsub("(?<!of )the", "of the", vec, perl = TRUE)
运行后得到的结果和你期望的完全一致:c("time of the day", "word of the day", "time of the day")
更严谨的优化写法
如果需要避免误匹配到包含the的其他单词(比如there、other等),可以加上单词边界锚定,仅替换独立的the单词:
result <- gsub("(?<!of )\\bthe\\b", "of the", vec, perl = TRUE)
内容的提问来源于stack exchange,提问作者user2957945
相关产品推荐
相关产品推荐

