JAVA/정규표현식
정규표현식 - 3
hongs429
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();
}