Java Regex搜索两个文件名

问题描述 投票:0回答:2

我需要一些Java正则表达式的帮助。 我有两个文件:

file_201111.txt.gz
file_2_201111.txt.gz

我需要一个正则表达式来搜索这两个文件。

如果我使用file_[0-9]+.txt.gz我得到第一个文件,如果我使用file_[0-9]_[0-9]+.txt.gz我得到第二个文件。

如何组合两种搜索模式来搜索这两个文件?

谢谢

java regex
2个回答
2
投票

您必须使用?指示可选单元是可选的。因为它是一个多字符单元,你应该用()分组。试试这个:

file(_[0-9])?_[0-9]+\\.txt\\.gz

3
投票

简要

由于您尚未指定所有文件的实际格式,因此我将向您展示几个正则表达式,您可以使用最符合您需求的格式。


Method 1

这匹配任意数量的_和数字。

See regex in use here

file[_\d]+\.txt\.gz

对于所有的仇敌,是的它将匹配file_.txt.gz,所以为了防止你可以使用file(?:_\d+)+\.txt\.gz代替。

Method 2

这与_number模式中的一个或两个匹配,其中number表示任意数字(1+位)。

See regex in use here:下面的两种模式都完成了同样的事情。

file(?:_\d+){1,2}\.txt\.gz
file_\d+(?:_\d+)?\.txt\.gz

说明

Method 1

  • file按字面意思对比
  • [_\d]+匹配集合中的任何一个或多个字符(_或数字)
  • \.txt\.gz符合字面意思(注意\.匹配文字点字符.

Method 2

  • file按字面意思对比
  • (?:_\d+){1,2}匹配_\d+(下划线后跟一个或多个数字)一次或两次 请注意,第二个选项_\d+(?:_\d+)?基本相同。
  • qazxsw poi字面匹配(注意qazxsw poi匹配文字点字符\.txt\.gz
© www.soinside.com 2019 - 2024. All rights reserved.