Soy Library

[프로그래밍] 정규표현식(Regular Expression) 본문

Study/Programming

[프로그래밍] 정규표현식(Regular Expression)

Soy_Hwang 2022. 3. 10. 00:13
정규표현식(regex)이란?  

프로그래밍에서 문자열을 다룰 때, 우리가 원하는 패턴을 찾거나, 해당 문자를 다른 문자열로 변환 등에 사용할 수 있는 일종의 형식 언어를 말한다. 1950년 Stephen Cole Kleene라는 수학자에 의해 만들어졌고, unix 계열에서 텍스트 파일을 처리하고 프로세스 하는데 많이 사용되었지만 현재는 많은 프로그래밍 언어에서 정규 표현식 기능을 제공한다.   

 

정규 표현식은 다음과 같이 구분된다.

/ 표현식 / i
패턴구분자 시작 찾을 문자열의 패턴 패턴구분자 끝 패턴변경자(flag)

/(slash)를 이용해서 정규표현식이다- 라는 것을 표현. + 내부에는 표현식 + flag(어떤 옵션을 이용해서 검색을 할 건지)

※ flag는 보통 global과 multiline을 사용한다. global은 매칭되는다수의 결과값을 저장하는 기억할 수 있는 옵션이고, multiline은 주어진 문자열에 줄바꿈이 있을 경우, 여러 줄로 취급하여 검사하는 옵션이다. 

 

아래 사이트에서 정규표현식을 연습할 수 있다.

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

Groups and ranges 
  • | 또는
  • () 그룹
  • (?:) 찾지만 기억하지는 않음. - 그룹으로 묶기 싫을 때는 앞에 ?:를 적어주면 그룹이 표시되지 않음.

  • [] 문자셋, 괄호 안의 어떤 문자든

a-f에서 -(hyphen)은 범위를 나타냄. 즉, a부터 f까지 

아래 왼쪽의 경우는 a부터 z까지, A부터 Z까지, 0부터 9까지 어떠한 문자든 찾는 표현식이다.

대괄호 옆에 ^ 표시는 not의 표시로, 해당 문자가 아닌 모든 문자를 찾을 때 사용할 수 있다.

 

Quantifiers
  • ? 없거나 있거나 (zero or one)
  • * 없거나 있거나 많거나 (zero or more)
  • + 하나 또는 많이 (one or more)
  • {#} #번 반복 
  • {min, } 최소
  • {min, max} 최소, 최대 
  •  
Boundary-type
  • \b 단어경계

  • \B 단어 경계가 아님
  • ^ 문장의 시작
  • $ 문장의 끝

 

Character classes
  • . 어떤 글자 (줄바꿈 문자 제외) 
  • \ 특수 문자가 아닌 문자 

dot문자 하나만 쓰면 모든 문자가 다 선택된다. character dot 만을 선택하고 싶을 때는 backslash를 이용하여 \.을 입력하면 된다.

  • \d digit 숫자
  • \D digit 숫자 아님

  • \w word 문자
  • \W word 문자 아님
  • \s space 공백
  • \s space 공백 아님

 

실습

전화번호만 선택하기

 

이메일 선택하기

 

유튜브 주소에서 아이디만을 가져오기

 

Reference