给出以下字符串向量x
x <- c("hello", "foo_bar", "blah_blub_(bleep)", "blah_(xyz)", "xyz(_$_)")
我正在寻找一个正则表达式来提取可选括号(及其内容)之前的所有内容。因此上述向量的最终结果应为:
c("hello", "foo_bar", "blah_blub", "blah", "xyz")
我提出了以下正则表达式,然而,这不起作用(为什么?):
R> sub("^(.*)[_?\\(.*\\)]?$", \\1, x)
[1] "hello" "foo_bar" "blah_blub_(bleep)" "blah_(xyz)" "xyz(_$_)"
感谢任何帮助!
答案 0 :(得分:0)
我们可以匹配零或更多_
后跟(
后跟另外一个字符的模式,直到字符串结尾,并将其替换为''
。
sub('_*\\(.*$', '', x)
#[1] "hello" "foo_bar" "blah_blub" "blah" "xyz"