본문 바로가기
Kosta DevOps 과정 280기/Java

정규표현식

by 롯슈83 2024. 5. 27.

정규 표현식(正規表現式, 영어: regular expression, 간단히 regexp 또는 regex, rational expression) 또는 정규식(正規式)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.

 

String 객체의 match메소드로 확인한다. 이때 \를 쓸 때는 앞에 \를 한번 더 입력해줘야한다.

  • boolean flag = str.matches(regex);
  • regex == String

정규 표현식의 종류

  • | : 또는
  • () : 연산자 범위 및 우선권
  • 바로 앞 글자에 대한 양에 대한 기호
    • + :1개 이상의 발생
    • * : 0개 이상의 발생
    • ? :0번 또는 1번 발생
    • {n} : 정확히 n번만큼 일치
    • {min, } : min 번 이상만큼 일치
    • {min, max} : min 이상 max 이하만큼 일치
  • .: 아무 글자 한글자
  • (a|b|c)d ==[abc]d
  • - : 범위 지정 ex) [a-z] 또는 [0-9] 또는 [A-Z]
  • ^ : 문자열의 처음이나 끝
  • $ : 끝
  • () : 하위패턴
  • [] : 문자 클래스
  • [^] : 부정. 그것 제외
    • [^A-Za-z0-9] : 특수문자만.
package com.kosta.exam01;

import java.util.Scanner;

public class CheckJumin_re{
	public static void main(String[] args) {
		int []n = {2,3,4,5,6,7,0,8,9,2,3,4,5};
		int r = 0;
		int chk = 0;
		String jumin;
		Scanner sc = new Scanner(System.in);
		System.out.print("주민번호를 입력하시오 ==> ");
		
		jumin = sc.next();
		
		//공식에 의한 계산된 결과값이 마지막 체크값과 따지기 전에 형식이 맞는지 판별
		//하이픈(-)을 기준으로 앞에는 6자리 숫자가 오고, 뒤에는 7자리 숫자가 와야한다.
		String regex ="[0-9]{6}-\\d{7}";
		boolean flag = true;
		if(!jumin.matches(regex)) {
			System.out.println("올바른 주민번호 형식이 아닙니다.");
			return;
		}
		chk = Integer.parseInt(jumin.charAt(jumin.length() - 1)+"");
		
		for(int i = 0; i < jumin.length() - 1; i ++) {
			if(i == 6)
				continue;
			r = r + n[i] * Integer.parseInt(jumin.charAt(i)+"");
		}
		r %= 11;
		r = 11 - r;
		r %= 10;
		if(r == chk)
			System.out.println("올바른 주민번호");
		else
			System.out.println("잘못 입력");
	}
}

'Kosta DevOps 과정 280기 > Java' 카테고리의 다른 글

예외 처리  (0) 2024.05.28
문자열 처리  (0) 2024.05.28
문자열  (0) 2024.05.27
파일 입출력  (0) 2024.05.24
난수  (0) 2024.05.23