하려고 하는 작업
- 특정 문자열에서 메타문자 {WRAP}{/WRAP}로 감싸진 숫자를 찾아서 마스킹 처리를 하고
{WRAP}{/WRAP} 메타문자는 삭제하고 싶다.
String dtl = "블라블라 {WRAP}123456{/WRAP} 어쩌구 저쩌구 {WRAP}987654{/WRAP} 마무으리 등등등...";
Matcher matcher = Pattern.compile("\\{WRAP\\}(\\d*)\\{/WRAP\\}"); // grouping을 하나 한 것에 주목
StringBuffer sb = new StringBuffer();
while(matcher.find()){ // 계속해서 결과를 찾아간다.
//문자열 맨 앞에서부터 sb에 붙여나가면서 치환 처리까지 수행한다.
matcher.appendReplacement(sb, StringUtil.mask(matcher.group(1))); // StringUtil.mask()라는 사용자정의 유틸이 있다 치자.
}
matcher.appendTail(sb); // find() 결과 영역이 아닌, 뒷부분의 문자열도 sb에 붙여서 완결시킨다.
dtl = sb.toString();