Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式从文件列表中选择带2个点的文件名_Java_Regex - Fatal编程技术网

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

Java 正则表达式从文件列表中选择带2个点的文件名,java,regex,Java,Regex,我需要一个regex表达式,用于从zip文件的文件列表中选择具有特定文件名格式的文件。 我需要选择文件名为以下文件格式的文件: <A-Z/a-z/0-9/special char>.<A-Z/a-z/0-9/special char>.zip 它可以是字母或数字或特殊字符或组合它们之间,点之间 请注意,文件名中只能有2个点。 除2点以外的任何内容都不是有效的文件名,将不会被选择 以下是无效的文件名: abc.zip abc.123.efg.zip as_1.efg.dd

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

<A-Z/a-z/0-9/special char>.<A-Z/a-z/0-9/special char>.zip
它可以是字母数字特殊字符组合它们之间,点之间

请注意,文件名中只能有2个点。
除2点以外的任何内容都不是有效的文件名,将不会被选择

以下是无效的文件名:

abc.zip
abc.123.efg.zip
as_1.efg.ddd.rr.zip
ee_rr.zip
我尝试了以下正则表达式:

[^.]*\\.[^.].zip     
但不起作用。也许这是错误的。
请让我知道选择所需文件名的正确正则表达式,您可以尝试此操作(假设您的正则表达式位于Java字符串中,我会使用双反斜杠):

另外,一个很好的选择是

我在这里测试过。通过此输入:

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
还使用此输入进行了测试(感谢)


点之间只有一个字符,或者缺少
*
?最后一点也可能缺少反斜杠…你可能想要这个
[^.]*\.[^.]*\.[^.]*\.zip
我认为我之前的评论不管用,我认为下面的方法管用
[^\.]+\.[^\.]+\.zip
格式是
。zip
正则表达式在字符串中?你能试试我的答案吗?我想现在可以了。如果没有,请让我知道。它允许这些无效值
.zip
.a.zip
a.zip
,您可以将其减少为
^(?[^\.]+\){2}zip$
(或者,在转义反斜杠后,
^(?[^\.]+\){2}zip$
,如果用户决定只需要3或4个点,而不是2个点,则更容易扩展。
^[^.]+\\.[^.]+\\.zip$
^(?:[^.]+\\.){2}zip$)
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
..zip
a..zip
.a.zip