DAY09(1) - 정규표현식

은나현·2023년 2월 2일
0

📌 1. 정규표현식

📍 1-1. 정규표현식이란?

  • 정규표현식(Regular expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식언어이다.
    • 정규표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있다.

📍 1-2. 정규표현식의 사용

	boolean java.util.regex.Pattern.matches(
		String arg0, CharSequence arg1
	);
  • arg0 : 정규표현식 문자열
  • arg1 : 형식을 검사받기 위한 내용
  • java.util.regex는 Import로 생략할 수 있다.

📍 1-3. 정규표현식의 용어들

  • 표현식의미표현식의미
    ^문자열의 시작$문자열의 종료
    x+x가 한 번 이상 반복된다.x*x가 0번 이상 반복된다.
    x?x는 존재할 수도, 존재하지 않을 수도 있다.x | yx또는 y가 존재한다.
    (x)x를 그룹으로 처리한다.(x)(y)그룹의 집합을 의미한다.
    (x)(?:y)그룹 집합으로 관리하지 않는 예외를 표현한다.x{n}x가 n번 반복된다.
    x{n,}x가 n번 이상 반복된다.x{n,m}x가 n번 이상 m번 이하 반복된다.
    [xy]x와 y중 하나[^xy]x와 y를 제외한 문자
    [x-z]range로, x와 z사이의 문자\^escape문자로 ^를 문자로 사용한다.
    \bword boundary
    문자와 공백 사이의 문자
    \Bnon word boundary
    문자와 공백 사이가 아닌 문자
    \ddigit 숫자\Dnon digit 숫자 아닌 것
    \sspace 공백 문자\Snon space 공백 문자가 아닌 것
    \ttab 탭\vvertical tab 수직 탭
    \wword 알파벳, 숫자, _중의 한 문자\Wnon word, word가 아닌 문자
  • flag

    • 정규표현식을 생성할 때 flag를 사용해 기본 검색 설정을 변경할 수 있다.

    • flag는 생략 가능하다.

    • flag의미
      iIgnore case - 대소문자를 구분하지 않는다.
      gglobal - 대상 문자열 내 모든 패턴을 검색한다.
      mMulti line - 다중 라인 문자열도 검색한다. 모든 ^와 $가 인식된다.
  • 모든 용어를 옮겨 놓지는 않았다.

📍 1-3. 정규표현식의 사용 예시

  • ^[0-9]*$
    • 숫자로만 구성되었는지에 대한 형식 검사
  • ^[a-zA-Z]*$
    • 영문으로만 구성되었는지에 대한 형식 검사
  • ^[ㄱ-ㅎ가-힣]*$
    • 한글로만 구성되었는지에 대한 형식 검사
  • ^[a-zA-Z0-9]*$
    • 영문과 숫자로만 구성되었는지에 대한 형식 검사
  • ^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$
    • 이메일 형식인지에 대한 검사.
      "아이디@도메인"의 형식을 충족해야 한다.
  • ^01(?:0|1|[6-9])(?:\\d{3}|\\d{4})\\d{4}$
    • -없이 핸드폰번호인지에 대한 형식검사.
  • ^\\d{2,3}\\d{3,4}\\d{4}$
    • -없이 전화번호인지에 대한 형식검사.
      각 부분에 대한 자리수도 충족시켜야 한다.
  • ^\\d{6}[1-4]\\d{6}
    • -없이 주민번호에 대한 글자수 및 뒷자리 첫글자가 1~4의 범위에 있는지에 대한 검사

0개의 댓글