我有一些文本;我想提取未被標點符號分隔的單詞對。這是代碼:Java正則表達式跳過匹配
//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);
}
問題是它跳過一些匹配。例如
「我的名字是詹姆斯」
,n = 3時,必須匹配
「我的名字是」 和 「的名字是詹姆斯」
,但它只是匹配第一個。有沒有辦法解決這個問題?
+1我知道**有更好的方法。 –