У меня есть текст; Я хочу извлечь пары слов, которые не разделены пунктуацией. Это код:Java regex skipping matches
//n-grams
Pattern p = Pattern.compile("[a-z]+");
if (n == 2) {
p = Pattern.compile("[a-z]+ [a-z]+");
}
if (n == 3) {
p = Pattern.compile("[a-z]+ [a-z]+ [a-z]+");
}
Matcher m = p.matcher(text.toLowerCase());
ArrayList<String> result = new ArrayList<String>();
while (m.find()) {
String temporary = m.group();
System.out.println(temporary);
result.add(temporary);
}
Проблема в том, что она пропускает некоторые совпадения. Например
"Меня зовут Джеймс"
, при п = 3, должны соответствовать
"мое имя" и "имя Джеймс"
, но вместо этого он соответствует только первому. Есть ли способ решить это?
+1 Я ** знал **, был лучший способ. –