2010-12-04 62 views
0

我正在用java写一个文件重命名程序。问题在于给出输入模式。java中的模式识别器

当输入是复杂的像(] [)在这种情况下,我被java.util.regex.Pattern中类得到错误..

编写这些代码的主要问题是输入模式和替换模式是用户输入。在处理过程中如何处理这些字符?

+1

你是单元测试吗? – stevebot 2010-12-04 19:29:24

+0

是的,那是单元测试的一部分... – 2010-12-04 19:44:42

回答

3

这是一个如何逃避特殊RegExp字符的例子s的Java源代码。我相信如果用户输入模式,您将不得不手动转义特殊字符。

 

package edu.mew.test.regexp; 

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class RegExpPatternTester { 

    public static void main(String[] args) { 
    String s1 = "filename()[].txt"; 
    Pattern p = Pattern.compile(".*\\(\\)\\[\\].*"); 
    Matcher m1 = p.matcher(s1); 
    System.out.println(m1.matches()); 
    String s2 = "filename.txt"; 
    Matcher m2 = p.matcher(s2); 
    System.out.println(m2.matches()); 
    } 

} 

 
2

您可以使用Pattern.quote转义正则表达式中的特殊字符。

+0

好吧,那工作正常。但在搜索时,它不识别文件名中的模式。 – 2010-12-04 19:39:22