regex - 用于匹配一年前的字符串的正则表达式
问题描述
我有包含年份编号的目录名称。我想将它们拆分为年份编号之前的变量:
输入:
Holidays.uS.2019.bla.bla
Holidays.ca.old.2017.bla.bla
Holidays.2015.bla.bla.bla
Holidays.1.2.3.4.at.old.1999.bla.bla.bla.bla
年份并不总是在同一个地方,但它总是有 4 位数字。
我总是需要一切到今年。
对于输入:
Holidays.ca.old.2017.bla.bla
输出:
Holidays.ca.old
试图
set name Holidays.ca.old.2017.bla.bla
set numbers [regexp -all -inline {[0-9]+} $name]
我的代码的输出是年份数字,有时还有其他错误数字。
解决方案
此表达式可能会帮助您设计一个:
([\w\.]+)(\.[0-9]{4}.+)
图形
该图显示了它的工作方式:
代码:
set string "Holidays.1.2.3.4.at.old.1999.bla.bla.bla.bla"
set match [regsub {([\w\.]+)(\.[0-9]{4}.+)} $string "\\1"]
puts $match
输出
Holidays.1.2.3.4.at.old
推荐阅读
- linux - 角色更改后 rsyslog 客户端无法用作 rsyslog 服务器
- r - 有没有办法为空值执行 if 语句
- android - 首次启动应用程序时不会调用 onReceive 方法
- php - Laravel - 将复选框数组存储为数据透视表中的布尔值
- node.js - Node Js Debugger 地址已经在使用中
- caching - rust-diesel 上没有缓存
- azure - 将 localhost 添加到 Azure AD/应用注册重定向 URL 是否存在安全风险?
- angular - 在github页面上部署我的角度网站没有错误但无法正常工作
- sql - SQL 查询。获取按 desc 排序的相似行
- excel - 多个空 Excel VBA 项目