2013-05-10 2 views
0

У меня есть моя собственная indexOf функцияTreat строка для использования регулярных выражений

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 в String, и это заставляет функцию возвращать ошибку Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*'.

Как я могу обработать созданный пользователем String для устранения таких ошибок?

+0

Предполагается, что они могут включать символы регулярного выражения, используемые * правильно *? –

+0

@ExplosionPills Это не так. Я хочу, чтобы regex char обрабатывался так же, как 's''' '' b' и т. Д. – Skizit

+2

«У меня есть собственная функция indexOf». Зачем? –

ответ

0

Использование Pattern.quote

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

. Примечание: это предполагает, что это не реальное регулярное выражение передается в

общественности статической строки котировка (String s)

Возвращает литерал pattern String для указанной строки. Этот метод создает строку, которая может быть использована для создания шаблона, который бы соответствовал строке s, как если бы это был буквенный шаблон.

Метасимволы или escape-последовательности во входной последовательности будут заданы без специального значения.

Смежные вопросы