gpt4 book ai didi

regex - 有条件地查找和替换的正则表达式

转载 作者:行者123 更新时间:2023-12-04 21:18:01 25 4
gpt4 key购买 nike

我需要用字符串 B 替换字符串 A,仅当字符串 A 是一个完整的单词时(例如“MECH”),并且当 A 是较长字符串的一部分(例如“MECHANICAL”)时,我不想进行替换.到目前为止,我有一个 grepl() 来检查字符串 A 是否是一个完整的字符串,但我不知道如何进行替换。我添加了一个 ifelse() 的想法是在 grep() 返回 TRUE 时替换 gsub(),否则不替换。有什么建议?请看下面的代码。谢谢。

aa <- data.frame(type = c("CONSTR", "MECH CONSTRUCTION", "MECHANICAL CONSTRUCTION MECH", "MECH CONSTR", "MECHCONSTRUCTION"))

from <- c("MECH", "MECHANICAL", "CONSTR", "CONSTRUCTION")
to <- c("MECHANICAL", "MECHANICAL", "CONSTRUCTION", "CONSTRUCTION")

gsub2 <- function(pattern, replacement, x, ...) {
for(i in 1:length(pattern)){
reg <- paste0("(^", pattern[i], "$)|(^", pattern[i], " )|( ", pattern[i], "$)|( ", pattern[i], " )")
ifelse(grepl(reg, aa$type),
x <- gsub(pattern[i], replacement[i], x, ...),
aa$type)
}
x
}

aa$title3 <- gsub2(from, to, aa$type)

最佳答案

您可以将字符串括在 from 中向量在 \\<\\>只匹配整个单词:

x <- c("CONSTR", "MECH CONSTRUCTION", "MECHANICAL CONSTRUCTION MECH", 
"MECH CONSTR", "MECHCONSTRUCTION")

from <- c("\\<MECH\\>", "\\<CONSTR\\>")
to <- c("MECHANICAL", "CONSTRUCTION")

for(i in 1:length(from)){
x <- gsub(from[i], to[i], x)
}

print(x)
# [1] "CONSTRUCTION" "MECHANICAL CONSTRUCTION"
# [3] "MECHANICAL CONSTRUCTION MECHANICAL" "MECHANICAL CONSTRUCTION"
# [5] "MECHCONSTRUCTION"

关于regex - 有条件地查找和替换的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18252688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com