java 정규식 활용 (Patter, Matcher)
이번 프로젝트를 진행하면서 자바 정규식을 활용할 기회가 있었습니다.
javascript에서의 정규식은 많이 접하고....활용하는 모습을 많이 볼 수 있었는데
자바에서 정규식 사용은 생소했는데요
그러면서 접하게 된것이 Pattern과 Matcher 입니다.
완전 처음들었어요....
소스를 적어보면
String test = "가나다라마바 1 wkeflskehs 21 가모디낟 7 ABCDEF"; Pattern pattern = Pattern.compile("[\\d]"); Matcher matcher = pattern.matcher(test); int index=0; while(matcher.find()) { logger.info(matcher+"@@@@@@@@@@matcher.start()="+ matcher.start()); logger.info(matcher+"@@@@@@@@@@matcher.end()="+ matcher.end()); logger.info(matcher+"@@@@@@@@@@@matcher.group()="+ matcher.group()); logger.info("@@@@@@@@@@matcher.group(matcher.groupCount())="+ matcher.group(matcher.groupCount())); logger.info("@@@@@@@@@@matcher.regionEnd()="+ matcher.regionEnd()); index = matcher.start(); } logger.info("@@@@@@@@@@@@@@결과==="+ test.substring(0, index+1));
설명을 간략히 하면
Pattern 클래스를 활용하여 패턴을 정의합니다. 여기서 바로 정규식의 패턴을 활용합니다. 저는 간단하게 숫자를 캐치하려고 합니다.
다양한 정규식들이 많으니 찾아서 적용하시면 될 것 같습니다.
정의한 Pattern 을 Matcher에 적용을 시킵니다.
이후에 matcher.find()를 활용하여 매치되는 문자를 찾아냅니다.
제가 찾고자하는 문자는
가나다라마바 1 wkeflskehs 21 가모디낟 7 ABCDEF 중에
마지막 숫자 뒤의 문자를 뽑아내려고 하였습니다.
그래서 별도의...index변수를 활용하였습니다.
그리고 진행하면서 별도의 함수 start(), end(), group()등을 적어놓고자 테스트 결과를 로그로 찍었습니다.
결과
추가로 한글 단어를 추출하는 정규식을 메모해 두겠습니다.
ex) 선고 ~~~~ 판결
pattern = Pattern.compile("\\선고(.*?)\\판결");