簡體   English   中英

Java Regex搜索兩個文件名

[英]Java Regex search two file names

我需要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+個數字)。

請參閱此處使用的正則表達式 :以下兩種模式可以完成相同的操作。

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

說明

方法1

  • file逐字匹配
  • [_\\d]+匹配集合中任何一個或多個字符( _或數字)
  • \\.txt\\.gz從字面上進行匹配(請注意, \\.與文字點字符相匹配.

方法2

  • file逐字匹配
  • (?:_\\d+){1,2}匹配_\\d+ (下划線后跟一位或多位數字)一次或兩次
    • 注意第二個選項_\\d+(?:_\\d+)? 基本相同。
  • \\.txt\\.gz從字面上進行匹配(請注意\\.匹配一個litearl點字符.

您必須指出可選單元是可選的? 並且由於它是一個多字符單元,因此應將其與()分組。 嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM