1

所以我在 R 中编辑一些字符串,我想从字符串中删除括号中的所有内容。问题是,我对正则表达式不是很精通,而且似乎任何时候我想使用 gsub 来弄乱括号,它都不起作用,或者不会产生正确的结果。

有什么提示吗?我有一种感觉,这是一个可以解决的问题。可能有一个我可以使用的函数不是 gsub 吗?

前任。字符串:“abc def (foo) abc (def)”应该被剥离为“abc def abc”

如果这样做的唯一方法是指定括号中的内容,那也很好。

4

3 回答 3

3

只是另一种方式:

x <- "abc def (foo) abc (def)"
gsub(" *\\(.*?)", "", x)

您需要在正则表达式中(使用 a转义。\在 R 中,您需要转义两次\\。然后你以非贪婪的方式在后面搜索任何东西 ( .*) ,后面跟着(你不必逃避。(?.*)

于 2013-06-27T07:33:49.830 回答
2

括号通常是正则表达式中的特殊字符,在 R 中也是如此。你必须用反斜杠转义它们\。问题是反斜杠也需要在 R 字符串中转义,使用第二个反斜杠,这导致以下相当笨拙的构造:

gsub(" *\\([^)]*\\) *", " ", "abc def (foo) abc (def)")

小心空格,我的gsub电话没有正确处理这些空格。

于 2013-06-27T07:14:57.930 回答
2

qdap包中的bracketX函数就是针对这个问题设计的:

library(qdap)
x <- "abc def (foo) abc (def)"
bracketX(x, "round")

## > bracketX(x, "round")
## [1] "abc def abc"
于 2013-06-27T12:55:02.680 回答