0

我有自己的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有时用户可能会在字符串中包含正则表达式字符*** hello world,这会导致函数返回Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*'错误。

如何处理用户生成的字符串以克服此类错误?

4

1 回答 1

0

利用Pattern.quote

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

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

公共静态字符串报价(字符串 s)

返回指定字符串的文字模式字符串。此方法生成一个字符串,可用于创建一个模式,该模式将匹配字符串 s,就好像它是文字模式一样。

输入序列中的元字符或转义序列将没有特殊含义。

于 2013-05-10T22:17:35.667 回答