기본 콘텐츠로 건너뛰기
[MASTER THE REGEXP] [Hackerrank] Java Regex 2 - Duplicate Words Solution 해설
Regex
regular expression : \b(\w+)(?:\W+\1\b)+
- \w : 한 글자 (word character): [a-zA-Z_0-9]
- \W : non-word charcter: [^\w]
- \b : word boundary
- \1 : 첫번째 괄호그룹과 매칭되는 부분(\w+)을 매칭한다
- + : 앞에나온 괄후그룹이 한번이상 나온것을 매칭한다
- \b 바운더리는 "Bob and Andy" ("and"가 두번 매칭되면 안됨) 와 같은 케이스를 없애기 위해서이다.
Groups
input = inpuit.replaceAll(m.group(),m.group(1))
- 그룹전체를 첫번째 그룹으로 교체한다
- m.group : 전체 매칭
- m.group(i) : i번째 매칭, m.group(1)은 첫번째 매치이다.
- ?: -> (x)(?:y) 캡쳐하지 않는 그룹을 생설할 경우 ?:를 사용함, 결과값 배열에 캡쳐하지 않은 그룹은 들어가지 않음, 성능이 약간 빨라진다
댓글
댓글 쓰기