R正则表达式获得部分匹配

2023-12-01

我想使用 stri_replace_all_regex 替换字符串但失败。我想知道是否还有其他方法可以克服它。 感谢任何给我帮助的人!

尝试: 首先:

> library(string)
> a <- c('abc2','xycd2','mnb345','tumb b~','lymavc') 
> b <- c('ab','abc','xyc','mnb','tum','mn','tumb','lym','lymav') 
> stri_replace_all_regex(a, "\\b" %s+% b %s+% "\\S+", b, vectorize_all=FALSE)

然而,结果是:

> c("ab","xyc","mn" ,"tum b~","lym")

这不是我想要的。 我想要的结果应该是:

> c('abc','xyc','mnb','tumb','lymac')

第二:

> pattern <- paste0("\\b(", b, ")\\S+", collapse = "|")
> gsub(pattern, "\\w", a)

然而它失败了。 我感到抱歉,是我的错误,我没有表达清楚。 其实我想更换b with a。 如你所见,a and b左边有一些相似的部分,我想删除其中的差异a。但应该是贪心匹配。 例如: 的结果'tumb b~‘应该'thumb' not 'tum'和结果'mnb345‘应该'mnb' not 'mn'。 我只是学习正则表达式,所以我的尝试可能会很复杂和麻烦。期待您的回复!

新的问题出现了。

a <- c('tums310','tums310~20','tums320')  
b<-c('tums1','tums2','tums3')

我想要的结果应该是

“tums3” “tums3” “tums3”


也许您正在寻找adist.

a <- c('abc2','xycd2','mnb345','tumb b~','lymavc') 
b <- c('ab','abc','xyc','mnb','tum','mn','tumb','lym','lymav')
b[apply(adist(b, a) + adist(b, a, partial=TRUE), 2, which.min)]
#[1] "abc"   "xyc"   "mnb"   "tumb"  "lymav"

a <- c('tums310','tums310~20','tums320')  
b <- c('tums1','tums2','tums3')
b[apply(adist(b, a) + adist(b, a, partial=TRUE), 2, which.min)]
#[1] "tums3" "tums3" "tums3"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R正则表达式获得部分匹配 的相关文章

随机推荐