正则表达式匹配文本与括号中的可选文本

时间:2015-11-29 10:48:02

标签: regex r

给出以下字符串向量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(_$_)"         

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我们可以匹配零或更多_后跟(后跟另外一个字符的模式,直到字符串结尾,并将其替换为''

sub('_*\\(.*$', '', x)
#[1] "hello"     "foo_bar"   "blah_blub" "blah"      "xyz"