正则表达式:如何在捕获单个组时匹配整个字符串

时间:2019-06-18 18:29:15

标签: java regex

我正试图用正则表达式解析此文件名中的日期。

LBX845656_PayOnline_0528- 20191429 .txt.052819220054.bak

我遇到的问题是,我需要使用正则表达式来匹配整个文件名,同时捕获其中带有日期的组。

我编写了此正则表达式以捕获捕获组1中的Date:

([0-9]{0,8}(?=\.txt))

使用在线正则表达式测试器,这似乎可以从我要查找的文件名中捕获正确的字符串,但是我无法弄清楚如何也获得正则表达式来匹配整个字符串。

这就是我要退货的

FULL MATCH: LBX845656_PayOnline_0528-**20191429**.txt.052819220054.bak
CAPTURE GROUP 1: 20191429

预先感谢您的任何建议。

1 个答案:

答案 0 :(得分:-1)

我认为这是一个更简单的正则表达式,假设日期始终为8位数字,就可以解决您的问题。

选项1

如果您可以假定日期是文件名中唯一的8位数字字符串,则

^.*[^\d](\d{8})[^\d].*$

选项2

如果要假定其前面带有“-”并且具有“。”。之后

^.*-(\d{8})\..*$

选项3

如果您要假设其后跟.txt

^.*(\d{8})\.txt.*$