正则表达式删除括号中的文本(如果存在)

时间:2019-02-25 19:45:05

标签: regex ruby parsing

如果在括号内的任何位置出现YYYY年,则删除括号内的所有文本。

这是我已经尝试过的:

a = []
while line = DATA.gets       
  a = a.push(line.split(/\(.+\d{4}.+\)/))
end                        

a.each {|x|
p x}
__END__
Start text (Name, 2019) and more text (reg bracket - keep) and more text (2018 references - remove).

我希望此文本返回:“开始文本和更多文本(reg括号-保留)和更多文本。”

1 个答案:

答案 0 :(得分:1)

如果4位数字可以位于任意位置,并且没有进一步的左括号和右括号,那么获得该匹配项的一种方法是:

匹配开头括号,然后匹配0+次而不是开头或结尾括号。然后匹配4位数字,再匹配0+次而不是左括号或右括号。

\([^()]*\d{4}[^()]*\)

查看regex demo