R中str_detect函数中的单词边界

时间:2019-02-13 19:21:57

标签: r

在下面的字符串中,我希望str_detect仅在字符'AD时返回TRUE '在字符串中找到。

ocode<-"ADV TXN CODE SCHED CC AMEX"

我尝试了

str_detect(ocode,pattern="AD") which returns TRUE as expected
str_detect(ocode,pattern="ADV") which also returns TRUE as expected
str_detect(ocode,pattern="AD\b") returns FALSE as expected 

但是

str_detect(ocode,pattern="ADV\b") returns FALSE

我不明白为什么会这样?是否不应该找到“ ADV”后跟空格并返回true?

我要解决的问题是过滤给定输入的字符串,但是如果搜索条件为AD,则过滤器只返回带有AD和ADV的字符串,而我希望过滤器仅返回带有AD的字符串。

1 个答案:

答案 0 :(得分:1)

尝试使用str_detect(ocode,pattern="ADV\\b")。在R中使用正则表达式时,必须转义\

该正则表达式只返回\\b之前的内容,因为它返回非单词字符之前的所有内容:

str_extract(ocode,pattern="ADV\\b")
## [1] "ADV"