我需要一些有关 Java 正则表达式的帮助。
我有两个文件:
file_201111.txt.gz
file_2_201111.txt.gz
我需要一个正则表达式来搜索这两个文件。
如果我使用file_[0-9]+.txt.gz
,如果我使用file_[0-9]_[0-9]+.txt,我会得到第一个文件.gz
我得到第二个文件。
如何组合两种搜索模式来搜索这两个文件?
谢谢
最佳答案
简介
由于您尚未指定所有文件的实际格式,因此我将向您提供几个正则表达式,您可以使用最符合您需求的一个。
<小时/>代码
方法1
这匹配任意数量的 _
和数字。
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/