如何匹配R中字符串末尾的子字符串?

时间:2017-06-17 01:40:30

标签: r

我正在使用grepl来检测字符串是否包含子字符串。例如:

grepl("-B4","P6-B4")

显然返回True。现在我想避免在“-B4”子字符串后面有字符的情况。例如,我希望从以下内容中看到False:

grepl("-B4","P6-B41A")

你可以看到我想避免它的原因是因为4与41不同而且我不想检测41。 谢谢

3 个答案:

答案 0 :(得分:4)

grepl("-B4$",c("P6-B41A", "P6-B4"))
#[1] FALSE  TRUE

答案 1 :(得分:3)

这似乎是使用endsWith()的最佳时机。它确定字符串是否以特定字符或一系列字符结尾。

endsWith(c("P6-B41A", "P6-B4"), "-B4")
# [1] FALSE  TRUE

根据help(endsWith),它也比grepl()更有效。

答案 2 :(得分:1)

另一种选择是提取最后3个字符并执行==

substr(v1, nchar(v1)-2, nchar(v1)) == "-B4"
#[1] FALSE  TRUE

数据

v1 <- c("P6-B41A", "P6-B4")