본문 바로가기

Java

정규식 패턴 설명 및 예제





1. \\p{Digit} : 숫자 제거


2. \\p{Space} : 공백 제거


3. \\p{Punct} : 특수기호 제거


4. . : 하나의 문자를 의미합니다. 즉, ab. 은 abc나 abd가 될 수 있습니다.


5. ? : 해당 패턴의 앞에 문자가(1개)없거나 혹은 한개가 존재하는 경우를 의미합니다. 즉, a?c는 abc도 될 수 있고, bc도 될 수 있습니다.


6. * : 위와 거의 동일하나 하나 이상의 문자를 의미하게 됩니다. 즉, ab*는 aaa도 ab도 될 수 있다는 의미입니다.


7. ^ : 문자열의 시작을 의미합니다. 즉, ^a는 a로 시작되는 문자를 검색하게 됩니다.


8. + : 앞의 문자가 하나이상의 반복을 의미합니다. 즉, ab+는 abbbb가 될 수도 있다는 의미입니다.


9. [^] : 괄호안의 형식을 제외한다는 의미입니다. 즉, [^a]bc는 a를 제외한 bc, bcd등을 나타냅니다.


10. $ 문자열의 끝을 의미합니다. 즉, ab$가 되는 경우 반드시 b로 끝나는 문자를 나타냅니다.

11. [ ] : 괄호안의 형식이 일치하는 경우를 나타냅니다. 즉, [ab]는 a,b,ab모두가 일치하게 됩니다.

12. ( ) : ()안의 내용을 하나의 묶음으로 사용합니다. 즉, (ab)+는 위 +에 따라 ababab등을 나타냅니다.


13. { } : 안의 숫자에 따른 반복개수를 의미합니다. 즉, ab{2}는 abab를 나타냅니다.


14. | : or연산자와 동일합니다. 즉, a|b|c 는 a,b,c,abc모두가 될 수 있습니다.


 


/**
 * 패턴 정의
 * @author lsh
 *
 */
public class PatternDefine {
	/**
	 *  전화번호 검색 패턴 02-472-2012 024722012
	 */
	public static final String PATTERN_PHONE = "(\\(?\\d{2,3}\\)?-?\\d{3,4}-?\\d{4})|(\\d{9,11})";

	/**
	 * 읍,면,동 구분
	 */
	public static final String PATTERN_ADDRESS_UM_MYUN_DONG = "(\uC74D)|(\uBA74)|(\uB3D9)";
	
	/**
	 * 시,군,구 구분
	 */
	public static final String PATTERN_ADDRESS_SI_GUN_GU="(\uC2DC)|(\uAD70)|(\uAD6C)";
	
	/**
	 * 통합 주소 검색 읍12,면12,동12,가12
	 */
	public static final String PATTERN_ADDRESS_UM_MYUN_DONG_GA_BUNJI = "(\uC0B0\\d{1,5})|(\uBA74\\d{1,5})|(\uB3D9\\d{1,5})|(\uAC00\\d{1,5})|(\uB9AC\\d{1,5})";
		
	/**
	 * 공백 제거 패턴
	 */
	public static final String PATTERN_BLANK = "\\p{Space}";

	/**
	 * 한글 구분
	 */
	public static final String PATTERN_HANGUL = "[\\x{ac00}-\\x{d7af}]";
	
	/**
	 * 기호중에서 - or ~ 둘중에 하나가 있는경우 구분 
	 */
	public static final String PATTERN_HYPHEN_OR_SWUNG_DASH ="(~|-)";

	/**
	 * 시,도 - 시,군,구 구분
	 */
	public static final String PATTERN_ADDRESS_SI_DO_SI_GUN_GU = "(" + PATTERN_HANGUL + "+(\uC2DC|\uB3C4)+" + PATTERN_HANGUL + "+(\uC2DC|\uAD70|\uAD6C))";

	/**
	 * 도로명 주소 뒤에 붙는 글자
	 * ex
	 * 1. 부산광역시 중구 중구로 지하31  (신창동4가)  -> 지하
	 */
	public static final String PATTERN_ROAD_SUFFIX_TEXT = "(\uC9C0\uD558)";
	
	/**
	 * 도로명 주소 뒤에 붙는 패턴 ex) 
	 * <br> 앞에 접두사 로|길
	 * <br> 1.숫자
	 * <br> 2.숫자+번지
	 * <br> 3.숫자(~|-)번지
	 * <br> 4.숫자(~|-)번지
	 * <br> 한글로 시작하는경우
	 * <br> 1.한글+숫자
	 * <br> 2.한글+숫자+번지
	 * <br> 3.한글+숫자(~|-)번지
	 * <br> 4.한글+숫자(~|-)번지
	 */
	public static final String PATTERN_ROAD_SUFFIX = 
			"(" +
			"(" +		
			"(\\d{1,5})"+
			"|(\\d{1,5}\uBC88\uC9C0)"+
			"|(\\d{1,5}(~|-)\\d{1,5})" +
			"|(\\d{1,5}(~|-)\\d{1,5}\uBC88\uC9C0)"+
			")"+
			"|"+
			"("+	
			"("+PATTERN_ROAD_SUFFIX_TEXT+"\\d{1,5})"+
			"|("+PATTERN_ROAD_SUFFIX_TEXT+"\\d{1,5}\uBC88\uC9C0)"+
			"|("+PATTERN_ROAD_SUFFIX_TEXT+"\\d{1,5}(~|-)\\d{1,5})" +
			"|("+PATTERN_ROAD_SUFFIX_TEXT+"\\d{1,5}(~|-)\\d{1,5}\uBC88\uC9C0)"+
			")"+
			")";

	
	/**
	 * 도로명 주소 패턴 ex) (한글|(숫자(~|-)숫자)|숫자)로|길			
	 */
	public static final String PATTERN_ROAD = "(([\\x{ac00}-\\x{d7af}]|(\\d{1,5}(~|-)\\d{1,5})|\\d{1,5})+(\uB85C|\uAE38))";
	
	
	/**
	 * 한글 + 읍,면,동,가,리
	 */
	public static final String PATTERN_ADDRESS_UM_MYUN_DONG_GA_RI = "([\\x{ac00}-\\x{d7af}]+((\uC74D)|(\uBA74)|(\uB3D9)|(\uAC00)|(\uB9AC)))";
	
	/**
	 * 한글 + 읍,면,동,가
	 */
	public static final String PATTERN_ADDRESS_UM_MYUN_DONG_GA = "([\\x{ac00}-\\x{d7af}]+((\uC74D)|(\uBA74)|(\uB3D9)|(\uAC00)))";
	
	/**
	 * 한글 + 리
	 */
	public static final String PATTERN_ADDRESS_RI = "([\\x{ac00}-\\x{d7af}]+(\uB9AC))";
	
	/**
	 * 번지 112-11, 11
	 */
	public static final String PATTERN_ADDRESS_BUNJI ="(\\d{1,5}(~|-)\\d{1,5}|\\d{1,5})";
	
	/**
	 * 산번지 112-112
	 */
	public static final String PATTERN_ADDRESS_SAN_BUNJI ="(\uC0B0(\\d{1,5}(~|-)\\d{1,5}|\\d{1,5}))";
	
	/**
	 * 회사이름 앞,뒤 글자
	 */
	public static final String PATTERN_COMPANY_PREFIX_AND_SUFFIX = "(\\(\uC8FC)\\)|(\\(\uC0AC)\\)|(\\(\uC7AC)\\)";
	
	/**
	 * 특수문자
	 */
	public static final String PATTERN_SPECIAL_LETTERS = "\\p{Punct}";
	
	/**
	 * 시,도 & 시,군,구 & 도로명 주소 분류 패턴
	 * @return
	 */
	public static String toSidoSigunguRoad() {
		StringBuffer buffer = new StringBuffer();
		buffer = new StringBuffer();
		buffer.append(PATTERN_ADDRESS_SI_DO_SI_GUN_GU);
		buffer.append(PATTERN_ROAD);
		buffer.append(PATTERN_ROAD_SUFFIX);
		return buffer.toString();
	}
	
	/**
	 * 시,군,구 & 도로명 주소 분류 패턴
	 * @return
	 */
	public static String toSigunguRoad() {
		StringBuffer buffer = new StringBuffer();
		buffer.append(PATTERN_ADDRESS_SI_GUN_GU);
		buffer.append(PATTERN_ROAD);
		buffer.append(PATTERN_ROAD_SUFFIX);
		return buffer.toString();
	}
	
	/**
	 * 도로명 주소 분류 패턴
	 * @return
	 */
	public static String toRoad(){
		StringBuffer buffer = new StringBuffer();
		buffer.append(PATTERN_ROAD);
		buffer.append(PATTERN_ROAD_SUFFIX);
		return buffer.toString();
	}
	
	/**
	 * 통합 주소 검색 패턴
	 * @return
	 */
	public static final String toUnifiedAddress(){
		StringBuffer buffer = new StringBuffer();
		buffer.append("(");
		buffer.append(PATTERN_ADDRESS_UM_MYUN_DONG_GA_RI);
		buffer.append(PATTERN_ADDRESS_BUNJI);
		buffer.append(")");
		buffer.append("|");
		buffer.append("(");
		buffer.append(PATTERN_ADDRESS_UM_MYUN_DONG_GA_RI);
		buffer.append(PATTERN_ADDRESS_SAN_BUNJI);
		buffer.append(")");
		return buffer.toString();
	}
}


'Java' 카테고리의 다른 글

Compare 정렬관련 설명  (0) 2014.03.06
jar 파일 실행파일로 만들기  (0) 2014.03.06
Java Naming Convention  (0) 2014.03.06
날짜관련 포맷  (0) 2014.03.06
시스템마다 달라지는 자바의 줄바꿈(행구분) 처리방법  (0) 2014.03.06