在下面的字符串中,我希望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的字符串。
答案 0 :(得分:1)
尝试使用str_detect(ocode,pattern="ADV\\b")
。在R中使用正则表达式时,必须转义\
。
该正则表达式只返回\\b
之前的内容,因为它返回非单词字符之前的所有内容:
str_extract(ocode,pattern="ADV\\b")
## [1] "ADV"