以下是样本字符串,它是 Flight No + Selling Code + Departure Date
的组合 .
航班没有类似 [A-Z]{2}\d{3,5}
的模式,销售代码是单个角色 . 我想从中捕获出发日期
AA78654UThursday 2018年10月11日20190年20190年10月11日2018年WW0461XMonday 2018年10月26日GF00356ZSunday 2018年10月26日
我试过Regex但没有得到预期的输出
((?<=[A-Z]{2}\d{3,5}[A-Z, a-z]{1}).*[0-9]{4}((?<=[A-Z]{2}\d{3,5})|$))
预期产出是:
Thursday 11 October 2018 Friday 11 October 2018 Monday 26 October 2018 Sunday 26 October 2018
你能帮我改进正则表达式来获取出发日期吗?
8 回答
你可以使用
[A-Z]{2}\d{3,5}[A-Z, a-z]{1}(\D*[0-9]{1,2}\D*[0-9]{4})
,这将使您想要的输出与捕获组
(\D*[0-9]{1,2}\D*[0-9]{4})
匹配 . 它将匹配任意数量的非数字字符(日期),1-2个数字(数字的日期),任何非数字以匹配月份和4个数字以匹配年份 .感谢您的所有回复 .
在上述所有回复的帮助下,我 Build 了一个正则表达式,以获得如下的出发日期
((?<=[A-Z]{2}\d{3,5}[A-Z, a-z]{1})(\D*[0-9]{1,2}\D*[0-9]{4}))
它完美地工作 .
感谢帮助!!
这是正则表达式
/.+((?:Sun|Mon|Tue|Wed|Thu|Fri|Sat).+)/
我使用非捕获括号列出一周中每天的3个首字母的所有可能性
捕获从非捕获括号中找到的任何一天的任何字符
尝试以下内容
穷人的正则表达 .
您可以使用
for ... in
循环和String.replace()删除初始信息 .您可以使用的正则表达式是 /(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)+.+$# ,但最后一部分不包含捕获组 . 如果您还想捕获此部分,则应将整个正则表达式括在括号中 .
出发日期:
说明
匹配整件事:
Group #1: 航班号
Group #2: 销售代码
Group #3: 完成出发日期
Group #4: 出发日
Group #5: 出发日期
Group #6: 离境月
Group #7: 出发年份