regex - 正则表达式删除括号中的文本(如果存在年份)
问题描述
如果括号内的任何位置出现年份 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 括号 - 保留)和更多文本。”
解决方案
如果 4 位数字可以位于任何位置并且没有进一步的左括号和右括号,则获得该匹配的一种选择可能是:
匹配左括号,然后匹配 0+ 次而不是左括号或右括号。然后匹配 4 个数字并再次匹配 0+ 次,而不是左括号或右括号。
\([^()]*\d{4}[^()]*\)
查看正则表达式演示
推荐阅读
- javascript - 使用 HTML5 数据属性获取 href 值
- java - 有效地从 jar 文件 INSIDE jar 文件中加载类
- haskell - 在捕获 stderr haskell 时与子进程交互
- javafx - JFoenix:当我添加 JFXProgressBar 时程序抛出异常
- android - Android Activity 在使用暗模式时被实例化两次
- react-native - 如何计算 React-Native 中算法的执行时间?
- r - 按标识符组织csv并在R中打开/处理子集
- vb.net - 如何在不使用 SQL 查询 WHERE 的情况下在 Visual Basic 的文本框中按字符串过滤 datagridview?
- r - 带有数字和分类变量的箱线图
- javascript - React 中是否总是需要渲染方法?