首页 > 解决方案 > 正则表达式:如何在捕获单个组时匹配整个字符串

问题描述

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

LBX845656_PayOnline_0528- 20191429 .txt.052819220054.bak

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

我编写了这个正则表达式来捕获捕获组 1 中的日期:

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

在线使用正则表达式测试器,这似乎从我正在寻找的文件名中捕获了正确的字符串,但我不知道如何让正则表达式匹配整个字符串。

这是我想要返回的

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

提前感谢您的任何建议。

标签: javaregex

解决方案


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

选项1

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

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

选项 2

如果你想假设它前面有一个“-”并且有一个“。” 后

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

选项 3

如果你想假设它后面跟着 .txt

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


推荐阅读