如何使用R中的正则表达式替换括号?

时间:2015-07-31 11:35:08

标签: regex r

我确定这是一个非常简单的问题。在此期间,我对R中的RegEx非常熟悉,但我无法理解这一点。

假设我们有这个字符串:

a <- c("a b . ) ] \"")

现在,我想要做的就是删除引号,圆点,结束副词和右括号。

所以,我想:"a b"

我试过了:

gsub("[.\\)\"\\]]", "", a)

它不起作用。它返回:"a b . ) ]"因此不会删除任何内容。

只要我从搜索模式中排除\\],就会有效......

gsub("[.\\)\"]", "", a)

但是,当然,它并没有删除右括号!

我做错了什么?!?

感谢您的帮助!

3 个答案:

答案 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"