JAVA/java 공부

[JAVA] RegularExpression 정규표현식

congs 2023. 9. 12. 00:53

 

RegularExpression 정규표현식

: 문자열에서 특정 패턴을 찾거나 교체, 삭제 등 문자열을 원하는 형태로 편집하는 기능

  • 문자의 형식을 검증하는 형태
  • 사용 예시 : 전화번호, 비밀번호
  • 정규표현식 문법
    1. [a-zA-Z] 대소문자 중 1개
    2. \d 숫자 = [0-9]와 동일
    3. \w 알파벳이나 숫자 1개=[a-zA-Z0-9]과동일
    4. . 모든 문자 중 임의의 한 문자
    5. ? 문자가 0번 =없음 or 1개
      • 문자가 0번 이상 발생
    6. {3,} : 3자리 이상
    7. 예 ) (02|010) - \d{3,4} - \d{4} => 010-111-1111 02-111-1111

 

! 사용

  1. Pattern 클래스의 메소드
    • compile(String regex); 주어진 정규표현식으로 패턴을 생성
    • matcher(CharSequence input); 대상 문자열이 일치하는 경우 true
  2. Matcher 클래스의 메소드
    • matches() 대상 문자열과 패턴이 일치하는 경우 true
    • find() 대상 문자열과 패턴이 일치하는 경우 true + 그 위치로 이동
    • start() 매칭하는 문자열의 시작 위치 반환
  3. 정규표현식 문법
    • ^ 문자열의 시작
    • $ 문자열의 끝
      • 문자열이 0번 이상 발생
      • 문자열이 1번 이상 발생
    • [ ] 문자열의 집합 범위
      • [0-9] 0-9 숫자
      • [a-z] a-z 알파벳
      • ^[ ] not의 의미

 


 

- 코드 예시 -

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpressionEx {
	public static void main(String[] args) {

		//배열 중 b로 시작하는 단어만 찾기
		String[] strArr = {"bat", "baby", "car", "cb", "date",
				"disk","count","apple","banana"};
		
		Arrays.sort(strArr); // 배열 정렬
		for(int i=0; i<strArr.length; i++) {
			System.out.print(strArr[i]+" ");
		}
		
		System.out.println();
		System.out.println("------------------------");
		
		Pattern pattern = Pattern.compile("b[a-zA-Z]*");
		for(String str : strArr) {
			Matcher matcher = pattern.matcher(str); 
			if(matcher.matches()) { //패턴이 일치가되면 true를 반환
				System.out.print(str+" ");
			}
		}
	}
}

- 코드 설명 - 

Pattern pattern = Pattern.compile("b[a-zA-Z]*");
//pattern에 [a-zA-Z]중 b의 패턴을 생성

 for(String str : strArr) {
   //향상된 for문= 임시변수 str에 strArr 배열 삽입

   Matcher matcher = pattern.matcher(str);
   //Matcher을 이용하여 pattern과 임시변수 str이 일치하는지 전체 확인 if(matcher.matches()) {
   //만약 패턴과 문자열이 일치가되면 true를 반환 System.out.print(str+" ");

 }

}