Проблема в том, что вы снова используете pattern.matcher(text)
, и это создает еще один экземпляр Matcher
, и когда вы вызываете start()
для нового экземпляра, выдается исключение, поскольку find
или matches
или lookingAt
не имеет был вызван раньше.
Вы можете использовать его следующим образом:
String text = "Hello bob, remind me to do a lot of things today";
final Pattern pattern = Pattern.compile("remind.*\\hto\\h");
Matcher m = pattern.matcher(text); // create it only once
// Looking for "remind <anyWord> to "
if (m.find()) {
System.err.println( "Start: " + m.start() + ", match: " + m.group() );
}
Также обратите внимание на изменения в вашем регулярном выражении. \h
соответствует горизонтальному пробелу, тогда как .to.
будет соответствовать любому символу до и после to
, следовательно, ваше регулярное выражение будет соответствовать:
"remind me to do a lot of things tod"
вместо предполагаемого:
"remind me to do "