我有自己的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以克服这些错误?
答案 0 :(得分:0)
Pattern p = Pattern.compile(Pattern.quote(pattern));
注意:这假设它不是传入的真正正则表达式。
public static String quote(String s)
返回指定String的文字模式String。这种方法 生成一个String,可以用来创建一个Pattern 将字符串s匹配,就像它是文字模式一样。
将给出输入序列中的元字符或转义序列 没有特别的意义。