我正在用java编写文件重命名程序。问题在于给出输入模式。
当输入很复杂时,如(] [),在这种情况下,我通过 java.util.regex.Pattern 类来获取错误..
编写此代码的主要问题是输入模式和替换模式是用户输入。如何处理这些字符?
答案 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