정규 표현식

Hyun·2023년 1월 6일
2

공부한거 정리

목록 보기
3/20

정규 표현식

  • 정규 표현식이란 특정한 규칙을 가진 문자열의 집합을 표현하는 방법

  • . / [] {} 와 같이 특별한 역할을 한다 ➜ 메타 문자

  • a 8 킥 와 같이 문자 그대로의 역할을 한다 ➜ 리터럴 문자

  • 스티븐 클레이니가 1956년 만듬

  • 옛날 유닉스 프로그램에서도 사용되었음

  • 오늘날 대부분의 프로그래밍 언어에서 지원

  • 정규 표현식을 잘 사용하여 문자열 집합을 뽑아내는 사람들을 참 섹시하다고 생각했다.

    • 나도 그런 사람들이 되고 싶어 정규 표현식을 정리하였다.

시작과 끝

  • ^ : 문자열 시작 부분만 매칭

  • $ : 문자열 끝 부분만 매칭

이스케이프

  • \메타문자 : 메타 문자를 리터럴 문자처럼 취급

와일드카드

  • . : 모든 문자 1개를 의미
  • .. : 모든 문자 2개를 의미
  • ... : 모든 문자 3개를 의미
    • 3개씩 묶여있다. (빈칸도 문자 취급)

대괄호

  • [ ] : 괄호안의 문자가 매칭

    괄호 1개당 문자 1개, h-w 는 범위를 나타냄


  • [^ ] : 괄호안의 문자가 아닌경우 매칭

그룹

  • ( | | ) : 그룹을 나눠서 해당되는 문자 매칭

수량자

  • 문자* : 앞에 있는 문자 개수가 0개 ~ 여러개 매칭

    a 2개, a 1개, a 0개 매칭


  • 문자+ : 앞에 있는 문자 개수가 1개 ~ 여러개 매칭

    a 2개, a 1개 매칭


  • 문자? : 앞에 있는 문자 개수가 0개 ~ 1개 매칭

    a 1개, a 1개, a 0개 매칭


  • 문자{숫자} : 숫자 개수만큼 문자 매칭

    [els][els][els] 만 매칭


  • 문자{작은 숫자, 큰 숫자} : 숫자 범위내의 개수만큼 모든 문자 매칭

    [els], [els][els], [els][els][els] 모두 매칭


  • 문자{숫자,} : 숫자 이상의 개수만큼 모든 문자 매칭

탐욕적 수량자 vs 게으른 수량자

  • 탐욕적 수량자 : 앞서 살펴본 모든 수량자

    • * , + , ? , { }
    • 조건을 만족해도 욕심이 많아서 계속 찾는다.

  • <게을러요> 를 찾았지만, 탐욕적 수량자는 욕심이 많아서 탐욕스럽게 끝까지 검색을 수행한다.
  • 결국 <탐욕스러워요> 의 닫히는 괄호를 찾는다.
  • 그리고 가장 긴 문자열이 매칭된다.

  • 게으른 수량자 : 탐욕적 수량자 뒤에 ? 를 붙인다.
    • *? , +? , ?? , { }
    • 게으르기 때문에 조건을 만족하면 탐색을 바로 종료한다.

  • <게을러요> 를 찾은 게으른 수량자는 게을러서 탐색을 중단하고 바로 퇴근한다.
  • 따라서 <게을러요> 가 매칭된다.
  • 이를 반복하여 <탐욕스러워요> 도 따로 매칭된다.

단어 경계값

  • \b : 단어의 영역을 만족할 경우 매칭
    • 단어는 공백, 띄어쓰기, 특수문자 등으로 구분합니다.
    • 단어의 영역은 앞뒤를 말합니다.

cat이 단어의 앞 부분인 경우 매칭


cat이 단어의 뒷 부분인 경우 매칭


  • cat 이 단어의 앞뒤 모두 해당할 경우 매칭
  • 즉, 단어 cat만 매칭

해당 문자 검색 (그러나 매칭은 하지 않는 경우)

  • (?=문자) : 문자를 검색에 사용하지만 결과물로 매칭되진 않음

    X는 검색에 사용하나, 결과물로서 매칭되진 않는다.


  • (?!문자) : 해당 문자가 들어간 단어는 매칭되지 않는다.

출처

생활코딩 정규 표현식 강의
https://opentutorials.org/module/622/5143

정규 표현식 - 위키백과
https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D


정규 표현식 예제
https://zvon.org/comp/r/tut-Regexp.html#Pages~Contents


정규 표현식 실습 사이트
https://regexr.com/

3개의 댓글

comment-user-thumbnail
2023년 1월 26일

벨로그는 스크랩이 없나요?

1개의 답글