-
정규표현식 - 3JAVA/정규표현식 2023. 5. 1. 17:38728x90
나중에 활용할 수 있도록 정규표현식과 설명을 간략하게 정리해두자.
정규표현식 설명 ^ 문자열의 시작 $ 문자열의 종료 . ( 점) 임의 문자 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(); }