Поиск слова в первом предложении, которого нет в последующих

Рейтинг: 0Ответов: 1Опубликовано: 19.04.2015

Я тут делаю лабораторную роботу, вроде все продумал, но как то завис на месте. Важно использовать именно StringBuffer и регулярные выражения. Вот кусок кода:

public static void main(String args[]) {
    String[] tokens = new String[100];
    StringBuffer str = new StringBuffer("This is a test message. This is test word ");
    strTokenizer(str, tokens);
}

public static void strTokenizer(StringBuffer str, String[] tokens) {
    int elements = 0;
    int i = 0;
    int start = 0;
    int end = 0;
    String separator = " ";        
    while(str.charAt(elements) != '.') {
        if(str.charAt(elements + 1) == ' ') {
            end = str.indexOf(separator, start);
            if(end > 0) {
                tokens[i++] = (str.substring(start, end));
                start = end + separator.length();
            }
            else tokens[i++] = (str.substring(start));   
        }   
        elements++;
    }
    end = str.indexOf(".", start);
    tokens[i++] = (str.substring(start, end));
}

Ответы

▲ 4Принят

Для такого существует negative lookahead, выглядеть будет так:

(?P<word>\b\w+\b)(?!.+(?P=word))

Regular expression visualization

Debuggex Demo


Ищем слово, сохраняем в группу word, потом используем negative lookahead в поисках любых символов и последующего слова.