2014-12-05 92 views
0

我想检查发送给我的文件名对两种模式。Java正则表达式的文件名

第一个正则表达式是〜*〜,它应该匹配〜263〜等名称。我把它放在在线正则表达式测试器中并且匹配。代码虽然不起作用。说没有匹配

List<FTPFile> ret = new ArrayList<FTPFile>(); 
    Pattern pattern = Pattern.compile("~*~"); 
    Matcher matcher; 
    for (FTPFile file : files) 
    { 
     matcher = pattern.matcher(file.getName()); 
     if(matcher.matches()) 
     { 
      ret.add(file); 
     } 
    } 
    return ret; 

此外,我还需要第二模式是@ @ *应匹配字符串像ABC @ ERE @ SSS

请告诉我在Java中适当的模式这一点。

回答

0

您需要定义你的模式一样,

Pattern pattern = Pattern.compile("~.*~"); 

~*在你的正则表达式~*~将重复第一~零次或多次。所以它不会匹配第一个~之后的数字。由于matches方法尝试匹配整个输入字符串,因此该正则表达式会导致匹配失败。因此,您需要在中间添加.*以匹配~66~~kjk~之类的字符串。为了配合其具有存在其间的~只有数字字符串,您需要使用~\d+~

+0

将尝试此操作并返回给您 – kavita 2014-12-05 11:54:09

+0

@kavita是否有效? – 2014-12-05 12:10:00

+0

是的,没有时间弄清楚第二个正则表达式。将尝试,然后标记正确。谢谢 – kavita 2014-12-06 12:25:07

0

尝试正则表达式:

\~.*\~ 

相反:

~*~ 

例子:

Pattern pattern = Pattern.compile("\\~.*\\~"); 
+0

'\\〜。* \\〜'正则表达式和'〜。*〜'正则表达式有什么区别? – 2014-12-06 13:57:54