正则表达式从文件列表中选择带有2个点的文件名

时间:2018-05-09 20:18:05

标签: java regex

我需要一个正则表达式表达式,它将从zip文件的文件列表中选择具有特定文件名格式的文件。
我需要选择文件名为以下文件格式的文件:

<A-Z/a-z/0-9/special char>.<A-Z/a-z/0-9/special char>.zip

文件名包含2个点.,它可以是点.之间的任意字符串 例如,以下是可以选择的有效文件名:

abc123.34efg.zip
qwe.123.zip
as_2ww.as_tyy.zip
23.fff.zip
asd.efg.zip

字母数字特殊字符组合 它们之间的点.
请注意,文件名中只能只有2个点 . 2点.以外的任何内容都不是有效的文件名,不会被选中。

以下无效文件名:

abc.zip
abc.123.efg.zip
as_1.efg.ddd.rr.zip
ee_rr.zip

我尝试了以下正则表达式:

[^.]*\\.[^.].zip     

但没有工作。也许这是错的。
请让我知道正确的正则表达式,以选择所需的文件名

1 个答案:

答案 0 :(得分:3)

你可以尝试这个(假设你的正则表达式在Java字符串中,我会加上双反斜杠。):

^[^.]+\\.[^.]+\\.zip$

此外,Xirema

指出了一个很好的选择
^(?:[^.]+\\.){2}zip$)

我在这个website中进行了测试。有了这个输入:

abc123.34efg.zip
qwe.123.zip
as_2ww.as_tyy.zip
23.fff.zip
asd.efg.zip
abc.zip
abc.123.efg.zip
as_1.efg.ddd.rr.zip
ee_rr.zip

还使用此输入进行了测试(感谢Matt.G

..zip
a..zip
.a.zip