首页 > 解决方案 > 正则表达式删除括号中的文本(如果存在年份)

问题描述

如果括号内的任何位置出现年份 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 括号 - 保留)和更多文本。”

标签: regexrubyparsing

解决方案


如果 4 位数字可以位于任何位置并且没有进一步的左括号和右括号,则获得该匹配的一种选择可能是:

匹配左括号,然后匹配 0+ 次而不是左括号或右括号。然后匹配 4 个数字并再次匹配 0+ 次,而不是左括号或右括号。

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

查看正则表达式演示


推荐阅读