Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 在正则表达式中排除_Java_Regex_Spring - Fatal编程技术网

Java 在正则表达式中排除

Java 在正则表达式中排除,java,regex,spring,Java,Regex,Spring,我想将不包含.temp的文件作为扩展名读取到文件夹中。我想用一个正则表达式。如何在正则表达式中使用排除来执行此操作?本部分告诉您如何查找特定的字符数组:[0-9]。如果要排除它,只需在它前面添加一个^(表示“not”)。就像“不是数字”的[^0-9] 所以,要回答您的问题,您需要在正则表达式中包含以下内容: ^((?!\.temp).)*$ 上述正则表达式将匹配任何不包含.temp的行。此部分告诉您查找特定的字符数组:[0-9]。如果要排除它,只需在它前面添加一个^(表示“not”)。就

我想将不包含
.temp
的文件作为扩展名读取到文件夹中。我想用一个正则表达式。如何在正则表达式中使用排除来执行此操作?

本部分告诉您如何查找特定的字符数组:
[0-9]
。如果要排除它,只需在它前面添加一个
^
(表示“not”)。就像“不是数字”的
[^0-9]

所以,要回答您的问题,您需要在正则表达式中包含以下内容:

   ^((?!\.temp).)*$

上述正则表达式将匹配任何不包含.temp的行。此部分告诉您查找特定的字符数组:
[0-9]
。如果要排除它,只需在它前面添加一个
^
(表示“not”)。就像“不是数字”的
[^0-9]

所以,要回答您的问题,您需要在正则表达式中包含以下内容:

   ^((?!\.temp).)*$

上面的正则表达式将匹配任何不包含.temp的行。我知道它不是正则表达式,但为了可读性,我会使用它

!fileName.endsWith(".temp")

知道它不是正则表达式,但为了可读性,我会使用它

!fileName.endsWith(".temp")

不要烦恼,只要否定测试即可:

private static final Pattern NOTME = Pattern.compile("\\.temp$");

// in code

if (NOTME.matcher(input).find())
    // illegal!
但实际上,您应该使用:

if (input.endsWith(".temp"))
    // illegal

另外,如果您使用Java 7,请不要使用
文件
,而是使用
文件
路径
不要担心,只需取消测试即可:

private static final Pattern NOTME = Pattern.compile("\\.temp$");

// in code

if (NOTME.matcher(input).find())
    // illegal!
但实际上,您应该使用:

if (input.endsWith(".temp"))
    // illegal

另外,如果您使用Java 7,请不要使用
文件
,而是使用
文件
路径

根据Java的FilenameFilter接口,您可以尝试以下操作:

package dk.tbsalling;

import java.io.File;
import java.io.FilenameFilter;

public class FileDemo {
   public static void main(String[] args) {

      File f = null;
      File[] paths;

      try{      
         f = new File("d:/tmp");

         FilenameFilter fileNameFilter = new FilenameFilter() {

            @Override
            public boolean accept(File dir, String name) {
               return name.matches(".+(?<!\.temp)");
            }
         };

         paths = f.listFiles(fileNameFilter);

         for(File path:paths)
         {
            System.out.println(path);
         }
      }catch(Exception e){
         e.printStackTrace();
      }
   }
}
dk.tbsalling包;
导入java.io.File;
导入java.io.FilenameFilter;
公共类文件演示{
公共静态void main(字符串[]args){
文件f=null;
文件[]路径;
试试{
f=新文件(“d:/tmp”);
FilenameFilter FilenameFilter=新FilenameFilter(){
@凌驾
公共布尔接受(文件目录,字符串名称){

返回name.matches(“.+(?您可以根据Java的FilenameFilter接口,尝试以下操作:

package dk.tbsalling;

import java.io.File;
import java.io.FilenameFilter;

public class FileDemo {
   public static void main(String[] args) {

      File f = null;
      File[] paths;

      try{      
         f = new File("d:/tmp");

         FilenameFilter fileNameFilter = new FilenameFilter() {

            @Override
            public boolean accept(File dir, String name) {
               return name.matches(".+(?<!\.temp)");
            }
         };

         paths = f.listFiles(fileNameFilter);

         for(File path:paths)
         {
            System.out.println(path);
         }
      }catch(Exception e){
         e.printStackTrace();
      }
   }
}
dk.tbsalling包;
导入java.io.File;
导入java.io.FilenameFilter;
公共类文件演示{
公共静态void main(字符串[]args){
文件f=null;
文件[]路径;
试试{
f=新文件(“d:/tmp”);
FilenameFilter FilenameFilter=新FilenameFilter(){
@凌驾
公共布尔接受(文件目录,字符串名称){
返回name.matches(“.+(?)?