我确定这是一个非常简单的问题。在此期间,我对R中的RegEx非常熟悉,但我无法理解这一点。
假设我们有这个字符串:
a <- c("a b . ) ] \"")
现在,我想要做的就是删除引号,圆点,结束副词和右括号。
所以,我想:"a b"
。
我试过了:
gsub("[.\\)\"\\]]", "", a)
它不起作用。它返回:"a b . ) ]"
因此不会删除任何内容。
只要我从搜索模式中排除\\]
,就会有效......
gsub("[.\\)\"]", "", a)
但是,当然,它并没有删除右括号!
我做错了什么?!?
感谢您的帮助!
答案 0 :(得分:2)
a <- c('a b . ) ] "');
gsub('\\s*[].)"]\\s*','',a);
## [1] "a b"
如果要在括号表达式中包含近括号字符,则应始终首先将其包括在括号内;这会导致它被视为括号表达式中的字符,而不是括号表达式的结束分隔符。
答案 1 :(得分:2)
以@akruns评论为基础
library(stringr)
str_trim(gsub('[.]|[[:punct:]]', '\\1', a))
将第一组括号中的句号替换为您要保留的标点符号。
答案 2 :(得分:1)
你可以试试这个。
> gsub("\\b\\W\\b(*SKIP)(*F)|\\W", "", a, perl=T)
[1] "a b"
> gsub("\\b(\\W)\\b|\\W", "\\1", a, perl=T)
[1] "a b"