2014-09-07 2 views
-1

У меня есть следующий кодRegex: Сличитель не находит совпадения

String expression="a weird case of {asda}something"; 
    Pattern aPattern=Pattern.compile("\\{(.*?)\\}"); 
    Matcher matcher = aPattern.matcher(expression); 
    boolean match = matcher.matches(); 

Это Виль всегда бросить

Exception in thread "main" java.lang.IllegalStateException: No match found 

Я не понимаю, почему он не найдет совпадение. Выход должен быть {asda}. Есть идеи?

+0

http://regex101.com/r/iX5xR2/2 – vks

+0

... как вы можете видеть, я говорю, что это не работает в java, используя mather. – diazazar

+0

Вместо этого используйте 'find()'. http://ideone.com/TjESYU – hwnd

ответ

4

Matcher#matches() пытается совместить весь String. В вашем случае регулярное выражение, которое вы предоставили, не соответствует всему выражению. Вы найдете сообщение о том, что find() и, возможно, group() для того, чтобы получить результат.

+0

это решило. спасибо – diazazar

+2

@ diazazar Если этот ответ решен, вы выдаете его, пожалуйста, примите его. Если вы сами решили свою проблему, отправьте сообщение и самостоятельно примите свой ответ. Это будет означать, что этот вопрос будет разрешен. Это важно для будущих посетителей. –

+0

@SylvainLeroux вам нужно подождать некоторое время, чтобы принять ответ. :) – diazazar

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