我想根据两种模式检查发送给我的文件名。
第一个正则表达式是〜*〜,它应匹配〜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 :(得分:0)
您需要定义您的模式,
Pattern pattern = Pattern.compile("~.*~");
你的正则表达式~*
中的 ~*~
将重复第一次~
零次或多次。所以它不会匹配第一个~
之后的数字。因为matches
方法尝试匹配整个输入字符串,所以此正则表达式会导致匹配失败。因此,您需要在中间添加.*
以匹配~66~
或~kjk~
等字符串。要匹配仅在~
之间存在数字的字符串,您需要使用~\d+~
答案 1 :(得分:0)
试用正则表达式:
\~.*\~
<强>相反:强>
~*~
示例:强>
Pattern pattern = Pattern.compile("\\~.*\\~");