AI Master Degree/Natural Language Processing

Regular Expressions 이란? 정규식이란?

saurus2 2022. 10. 6. 08:12

Regular Expressions 이란?

텍스트에서 패턴을 검색하기 위한 표준화된 '언어' 이다. 

예시

  1. 텍스트 문서에서 모든 이메일 주소 찾기
  2. 텍스트 문서에서 모든 가격 찾기

응용 프로그램

  • 텍스트 문서에서 정보를 찾을때 문자열이 매핑된 키워드 찾기 보다 강력하다.
  • 텍스트에서 구조화된 정보를 추출한다.

기본 검색

  • 특정 문자, 숫자 또는 문자열 찾기
  • 하나의 범위내에서 문자 또는 숫자 찾기
  • 특정 문자, 숫자를 제외한 문자 또는 숫자 찾기

Anchors (고정자) 는 문자열의 특정 위치 일치하는 정규식을 연결한다.

  • 행의 시작 부분에만 패턴을 일치시킬때 e.g. /^The/
  • 줄의 끝에만 패턴을 일치 시킬때, 행의 마지막 마침표와 일치 e.g. /^\./ 
  • 일치 단어 경계 e.g. /\bthe\b/ 'the' 는 일치해야하지만 'other' 는 일치 하지 않음

더 정교한 연산자

대체 - s/regexp1/pattern

  • s/colour/color - colour 를 color 로 대체한다.

캡쳐 그룹

  • 문자열에서 패턴을 저장하기 위해 괄호를 사용한다.
    • e.g. (.*) - 임의의 문자열과 일치한다.
    • e.g. /the (.*)er they were, the \1er they will be/ - 'the bigger they were, the bigger they will be' 와 일치한다.
    • e.g. /the (.*) they (.*), the \1er we \2/ - 'the faster they ran, the faster we ran' 와 일치한다.

정규식을 사용하여 채팅봇 만들기

  • 챗봇의 초기 시도는 정규 표현에 크게 의존했다.
    • e.g. s/.* I'M (depressed|sad) .*/I am sorry to hear you are \1/
    • e.g. s/.* I am (depressed|sad) .*/Why do you think you are \1/
    • e.g. s/.* all .*/In the way/
    • e.g. s/.* always .*/Can you think of a specific example/