java 정규식(regex)을 사용하여 2회 이상 반복되는 정규식 패턴의 문자열을 각각 치환(replace)하는 예제

By | 5월 11, 2021

하려고 하는 작업

  • 특정 문자열에서 메타문자 {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();
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments