Границы слова в функции str_detect в R - PullRequest
0 голосов
/ 13 февраля 2019

В приведенной ниже строке я хочу, чтобы str_detect возвращал TRUE, только если в строке обнаружены символы 'AD'.

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, так и с ADV, пока я хочуфильтр для возврата только строки с AD, если критерием поиска является AD.

1 Ответ

0 голосов
/ 13 февраля 2019

Попробуйте использовать str_detect(ocode,pattern="ADV\\b").При использовании регулярного выражения в R вы должны экранировать \.

. И это регулярное выражение просто возвращает то, что предшествует \\b, потому что оно возвращает все до несловесного символа:

str_extract(ocode,pattern="ADV\\b")
## [1] "ADV"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...