[java] [펌] 정규식 패턴 설명 및 예제 > JAVA

본문 바로가기

JAVA

[기타] [java] [펌] 정규식 패턴 설명 및 예제

회원사진
하나를하더라도최선을
2022-07-20 13:09 1,314 0

본문



5f2a87a66219a5eb83c3a0620a0aa125_1658290138_9785.png



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();
    }
}
 
출처: https://devlsh.tistory.com/entry/정규식-패턴-설명-및-예제 [잘해보자구!:티스토리]

[이 게시물은 하나를하더라도최선을님에 의해 2022-07-20 13:09:51 vb.net에서 이동 됨]

댓글목록0

등록된 댓글이 없습니다.
게시판 전체검색