让我用下面的例子来说明.
str = "we are friends"
Run Code Online (Sandbox Code Playgroud)
帮助文档说明了这一点
符号\ <和\>匹配单词开头和结尾的空字符串.
因此,预计会发生以下情况,其中在每个单词的末尾添加一个空格.
gsub("\\>"," ", str)
[1] "we are friends "
Run Code Online (Sandbox Code Playgroud)
但是,为什么它在使用时不起作用
gsub("\\<"," ", str)
[1] " w e a r e f r i e n d s"
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会这样吗?如果我想在每个单词的前面添加额外的空格,我需要做什么?
这很奇怪,但我认为这被记录为警告:
\n\n\n\n\nPOSIX 1003.2 模式
\ngsub和gregexpr不能正确处理重复的字边界(例如,pattern = "\\b")。用于perl = TRUE此类匹配(但对于非 ASCII 输入可能无法按预期工作,因为 \xe2\x80\x98word\xe2\x80\x99 的含义取决于系统)。
因此,使用\\\\b(?=\\\\w)or :(?<!\\\\w)\\\\bperl=T
str = "we are friends"\ngsub(\'(?<!\\\\w)\\\\b\', \' \', str, perl=T)\nRun Code Online (Sandbox Code Playgroud)\n\n查看演示
\n\n输出:[1] " we are friends"。