자바 정규표현식의 그룹 및 치환

프로그래밍/JAVA 2013. 8. 19. 12:55

자바 정규표현식의 그룹 및 치환

 

public void test() throws Exception {

             String EXAMPLE_TEST = "사용자 정보 : email=u{email}, 아이디=u{account}";

             String regexp = "u\\{(\\w+)\\}";

             Pattern pattern = Pattern.compile( regexp);

             Matcher matcher = pattern.matcher( EXAMPLE_TEST);

             StringBuffer result = new StringBuffer();

             while ( matcher.find()) {

                    System.out.print( "Start index: " + matcher.start());

                    System.out.print( " End index: " + matcher.end() + " ");

                    String propertyName = matcher.group(1));

                    matcher.appendReplacement( result, ObjectUtil.getProperty( user, propertyName));

             }

             matcher.appendTail( result);

             System.out.println(result.toString());

       }

 

위 코드는 사용자 정보를 표시하는 문자열이 입력되었을때 자동으로 User 객체에서 데이터를 매핑해서 리턴해 주는 함수의 예시입니다. 이때 정규표현식을 사용하면 편리합니다. 

정규표현식인 regexp 변수 안의 ( )  안의 담긴 문자열은 자동으로 Matcher 클래스에서 그룹으로 인식됩니다.

따라서 matcher.group(1) 메소드로 u{ } 안의 문자열(email, account)을 읽어올 수 있습니다. 

 

matcher.appendReplacement 함수로 find() 된 문자열을 치환하며 

while 문을 벗어난 후 matcher.appendTail 함수로 나머지를 추가하게 되면  치환이 완료된 문자열을 얻을 수 있습니다. 

 

참고 : 

http://ocpsoft.org/opensource/guide-to-regular-expressions-in-java-part-1/ 

http://www.vogella.com/articles/JavaRegularExpressions/article.html 


: