所以我在 R 中编辑一些字符串,我想从字符串中删除括号中的所有内容。问题是,我对正则表达式不是很精通,而且似乎任何时候我想使用 gsub 来弄乱括号,它都不起作用,或者不会产生正确的结果。
有什么提示吗?我有一种感觉,这是一个可以解决的问题。可能有一个我可以使用的函数不是 gsub 吗?
前任。字符串:“abc def (foo) abc (def)”应该被剥离为“abc def abc”
如果这样做的唯一方法是指定括号中的内容,那也很好。
只是另一种方式:
x <- "abc def (foo) abc (def)"
gsub(" *\\(.*?)", "", x)
您需要在正则表达式中(
使用 a转义。\
在 R 中,您需要转义两次\\
。然后你以非贪婪的方式在后面搜索任何东西 ( .*
) ,后面跟着(你不必逃避。(
?
.*
)
括号通常是正则表达式中的特殊字符,在 R 中也是如此。你必须用反斜杠转义它们\
。问题是反斜杠也需要在 R 字符串中转义,使用第二个反斜杠,这导致以下相当笨拙的构造:
gsub(" *\\([^)]*\\) *", " ", "abc def (foo) abc (def)")
小心空格,我的gsub
电话没有正确处理这些空格。
qdap包中的bracketX
函数就是针对这个问题设计的:
library(qdap)
x <- "abc def (foo) abc (def)"
bracketX(x, "round")
## > bracketX(x, "round")
## [1] "abc def abc"