자바 정규표현식의 그룹 및 치환
프로그래밍/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
'프로그래밍 > JAVA' 카테고리의 다른 글
Apache Common BeanUtils (0) | 2017.07.21 |
---|---|
JSP 에서 변환되는 HTML 의 공백 제거하기 (0) | 2015.01.06 |
자바에서 지정된 시간에 수행되는 작업 만들기 (0) | 2013.09.24 |
자바에서 10진수를 16진수로 변환시 (0) | 2013.09.10 |
Anonymouse 객체에서 this 의 활용 (0) | 2013.09.03 |