答案 0 :(得分:3)
\b
和\<
/ \>
之间的区别在于\b
可用于PCRE正则表达式模式(当您指定perl=TRUE
时)和ICU正则表达式模式( stringr 包)。
> s = "no where nowhere"
> sub("\\<no\\>", "", s)
[1] " where nowhere"
> sub("\\<no\\>", "", s, perl=T) ## \> and \< do not work with PCRE
[1] "no where nowhere"
> sub("\\bno\\b", "", s, perl=T) ## \b works with PCRE
[1] " where nowhere"
> library(stringr)
> str_replace(s, "\\bno\\b", "")
[1] " where nowhere"
> str_replace(s, "\\<no\\>", "")
[1] "no where nowhere"
\<
(始终代表单词的开头)和\>
(总是匹配单词的结尾)的优点是它们是明确的。 \b
可能会匹配两个位置。
还需要考虑的另一件事(refrence):
gsub和gregexpr的POSIX 1003.2模式在重复的字边界(例如
pattern = "\b"
)下无法正常工作。使用perl = TRUE
进行此类匹配(但对于非ASCII输入可能无法正常工作,因为'word'的含义取决于系统)。