ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정규표현식 - 3
    JAVA/정규표현식 2023. 5. 1. 17:38
    728x90

    나중에 활용할 수 있도록 정규표현식과 설명을 간략하게 정리해두자.

    정규표현식 설명
    ^ 문자열의 시작
    $ 문자열의 종료
    .   ( 점) 임의 문자 1개. 단,   " ' "와 는 인식 안됨
    * 바로 앞 또는 그룹() 이 0개 이상 존재
    + 바로 앞 또는 그룹() 이 1개 이상 존재
    ? 바로 앞 또는 그룹() 이 없거나, 1개 존재
    [ ] 문자의 집합이나 범위 표현. ' - (dash)' 기호로 범위 표현 가능 ex> [0-9] 0부터 9까지
    { } 바로 앞 또는 그룹() 의 등장 횟수, 또는 범위 표현
    ( ) 괄호 안의 문자를 하나의 문자로 인식  >>> '그룹'이라 칭함
     | 패턴을 OR 연산을 수행할 때 사용
    \s    vs    \S \s : 공백문자                 \S : 공백 문자가 아닌 나머지 문자
    \w   vs    \W \w : 알파벳이나 숫자    \W : 알파벳이나 숫자가 아닌 나머지 문자 
    \d   vs    \D \d : 숫자                        \D : 숫자를 제외한 나머지 문자
    자바 한정 (?i) 대소문자를 구별하지 않겠다는 의미

     

    필요할 때마다

    도우미 함수를 만들어 테스트해보자.

     

    도우미함수 준비

    public class RegExp03Main {
    
    	public static void main(String[] args) {
    		System.out.println("정규표현식\n");
    
    		String regex, intput, title;
    		String [] arrInput;
    
    		//─────────────────────────────────────────
    		title = "^ : 바로 문자뒤의 문자열로 시작됨";
    		regex = "^The"; // The 로 시작하는 문자열 패턴
    		arrInput = new String[] {
    				"The Things",            // o
    				"On The Things",        // x
    				" The The The",            // x
    				"There you go"            // o
    		};
            
            //*****************************************
    		// 패턴매칭 수행
    		System.out.println(title);
    		regExpTest(regex, arrInput);
    	}
    }

     

    도우미함수

    public static void regExpTest(String regex, String [] arrInput) {
    		for(String input : arrInput) regExpTest(regex, input);
    	}
    
    public static void regExpTest(String regex, String input) {
        System.out.println("[정규표현식 매칭 테스트]-----------------");
        System.out.println("정규표현식: " + regex);
        System.out.println("입력문자열: " + input);
    
        Matcher matcher = Pattern.compile(regex).matcher(input);
        int groupCount = matcher.groupCount();  // 그룹 개수
    
        int matchCount = 0;
        while(matcher.find()) {
            matchCount++;
            System.out.println("    매치" + matchCount + ": " + matcher.group() + " {" + matcher.start() + "~" + matcher.end() + "}");
    
            // 그룹이 있으면 group별 출력
            if(groupCount > 0) {
                for(int i = 0; i <= groupCount; i++) {     // i 범위 주목!
                    System.out.printf("\t group(%d): %s {%d~%d}\n",
                            i, matcher.group(i), matcher.start(i), matcher.end(i));
                }
            }
    
        } // end while
        if(matchCount == 0) System.out.println("   Ⅹ매치 없슴Ⅹ");
        System.out.println();
    }

    'JAVA > 정규표현식' 카테고리의 다른 글

    정규표현식 - 2  (0) 2023.05.01
    정규표현식 - 1  (0) 2023.05.01
Designed by Tistory.