연속 된 단어 수를 찾으려면 아래 표현식이 올바르게 작동해야합니다. 일치는 대소 문자를 구분하지 않을 수 있습니다.
String regex = "\\b(\\w+)(\\s+\\1\\b)*";
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(input);
// Check for subsequences of input that match the compiled pattern
while (m.find()) {
input = input.replaceAll(m.group(0), m.group(1));
}
샘플 입력 : Goodbye goodbye GooDbYe
샘플 출력 : Goodbye
설명:
정규식 :
\ b : 단어 경계의 시작
\ w + : 모든 단어 문자
(\ s + \ 1 \ b) * : 이전 단어와 일치하고 단어 경계로 끝나는 단어가 뒤에 오는 임의의 수의 공백. *로 묶인 모든 것은 하나 이상의 반복을 찾는 데 도움이됩니다.
그룹화 :
m.group (0) : 위의 경우 일치하는 그룹을 포함합니다 Goodbye goodbye GooDbYe
m.group (1) : 위의 경우 일치하는 패턴의 첫 단어를 포함합니다 Goodbye
Replace 메서드는 연속적으로 일치하는 모든 단어를 단어의 첫 번째 인스턴스로 대체합니다.