Java正则表达式搜索两个文件名

标签 java regex

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

file_201111.txt.gz
file_2_201111.txt.gz

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

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

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

谢谢

最佳答案

简介

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

<小时/>

代码

方法1

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

See regex in use here

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

对于所有仇恨者,是的,它将匹配file_.txt.gz,因此为了防止这种情况,您可以使用 file(?:_\d+)+\.txt\.gz相反。

方法2

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

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

file(?:_\d+){1,2}\.txt\.gz
file_\d+(?:_\d+)?\.txt\.gz
<小时/>

说明

方法1

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

方法2

  • 文件按字面意思匹配
  • (?:_\d+){1,2} 匹配 _\d+(下划线后跟一个或多个数字)一次或两次
    • 请注意,第二个选项 _\d+(?:_\d+)? 本质上是相同的。
  • \.txt\.gz 逐字匹配(请注意,\. 匹配文字点字符 .)

关于Java正则表达式搜索两个文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47913233/

相关文章:

java - 忽略 Spring Security 中的用户名大小写

java - 查找软件开发 session 列表的最佳地点是哪里?

ruby - 如何在第一次出现时停止匹配?

具有否定忽略模式的python copytree

java - 使用标识符拆分字符串中的单词的正则表达式模式

Javascript:检查字符串分隔符之间是否有空格

java - 蠕虫(蛇)游戏,棋子生长/move

java - 如何在 Go 中检查函数参数

实现匿名函数的匿名接口(interface)的java语法

java - 如何使用正则表达式从 cucumber 特征文件中提取特定场景