java中的模式识别器

时间:2010-12-04 19:27:31

标签: java pattern-matching

我正在用java编写文件重命名程序。问题在于给出输入模式。

当输入很复杂时,如(] [),在这种情况下,我通过 java.util.regex.Pattern 类来获取错误..

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

3 个答案:

答案 0 :(得分:3)

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


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());
  }

}


答案 1 :(得分:2)

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

答案 2 :(得分:0)

它们是正则表达式中的保留字符 你需要用两个反斜杠来逃避它们

//]

OOPS太多微软影响我的意思

反斜杠\\]

http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html