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

标签 java regex

<分区>

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

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

提前感谢您的任何建议。

最佳答案

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

选项 1

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

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

选项 2

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

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

选项3

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

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

关于java - 正则表达式:如何在捕获单个组时匹配整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56655041/

相关文章:

Java 正则表达式 : Case insensitive matching for non English characters

javascript regex - 删除查询字符串变量(如果存在)

java - 没有发现类定义错误

java - Java中POST请求体不能包含中文字符

java - 如何复制 "ant run"以使用 appclient 执行 Glassfish ACC 客户端

php - 检查字符串是否为 ip 子网

带小数点的基本数字的Javascript正则表达式?

java - ArrayList 到 Array 的 ArrayList

java - 如何从 Color 中提取 ARGB 并将它们转换为字节组件?

regex - 如何使用 grep 获取 `name=` 之后的任何内容?