处理字符串以使用正则表达式

时间:2013-05-10 22:14:56

标签: java regex

我有自己的indexOf功能

private static int indexOf(String target, String pattern){

    Pattern p = Pattern.compile(pattern);

    Matcher matcher = p.matcher(target);

    if(matcher.find()){

        return matcher.start();

    }

    return -1;
}

此功能接受用户提供的pattern,并查看pattern字符串中是否存在target。有时,用户可以在String中包含*** hello world等正则表达式字符,这会导致函数返回Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*'错误。

如何处理用户生成的String以克服这些错误?

1 个答案:

答案 0 :(得分:0)

使用Pattern.quote

Pattern p = Pattern.compile(Pattern.quote(pattern));

注意:这假设它不是传入的真正正则表达式。

  

public static String quote(String s)

     

返回指定String的文字模式String。这种方法   生成一个String,可以用来创建一个Pattern   将字符串s匹配,就像它是文字模式一样。

     

将给出输入序列中的元字符或转义序列   没有特别的意义。