본문 바로가기

SSAFY TechTalk Study

Day14 : 정규표현식(Regex)

💫작성자 및 원본 글💫
dgh03207 (https://github.com/ssafy-tech-concert/ssafy-tech-concert/blob/master/Etc/REGEX.md)

❔ 정규표현식이란?

: 특정 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어로, 컴퓨터 과학의 정규 언어로부터 유래하였다.

✍ 정규표현식의 기본 원칙들

메타 문자를 그냥 문자로 쓰고 싶을때 : \ 역슬래쉬를 사용

📍 위치로 찾을때

메타문자 설명 기타
^'문자' 문자열에서 '문자'로 시작하는 것을 찾음
'문자'$ 문자열에서 '문자'로 끝나는 것을 찾음
  • ^hi
    • hihellohi
  • hi$
    • hihellohi

🔍 문자로 찾을때

메타문자 설명 기타
문자 클래스 [] []사이의 문자들과 매치
-(하이폰) 두 문자 사이의 범위
[^] []안에서 사용하면 not을 의미하게된다. [^0-9] == 숫자를 제외한 문자만 매치됨
.(Dot) 줄바꿈 문자인 '\n'을 제외한 모든 문자와 매치
| or과 같은 역할을함

Test : himymeminehi

  • [ ]
    • [mi] : 문자m 혹은 i와 매치됨 -> himymeminehi
    • [my]. : 문자 m혹은 y와 매치되는 것 + . -> himymeminehi
    • [him][hie] : h,i,m중 하나와 매치되는 것과 h,i,e중 하나와 매치되는 것이 이어진 문자 -> himymeminehi
  • .(Dot)
    • . : 모든 문자와 매치됨 -> himymeminehi
    • ..... : 5개의 문자와 매치 -> himymeminehi
    • \..\. : .과.사이의 모든 문자를 가리킨다.
      • .h.imymeminehi -> .h.imymeminehi

Test : ABCDabcefghijklm12345789

  • -
    • ABCDEFGHIJKLMNOPQRSTUVWXYZ
    • abcdefghijklmnopqrstuvwxyz
    • 0123456789
    • [A-g] : A부터 Z + a부터 g까지 의 문자 -> ABCDabcefghijklm12345789
    • [C-Ka-d2-6] : ABCDabcefghijklm12345789
  • [^]
    • [^cd] : CD를 제외한 문자 -> ABCDabcefghijklm12345789
    • [^a-z] : 알파벳 소문자를 제외한 문자 -> ABCDabcefghijklm12345789

Test : Monday Tuesday Friday

  • |
    • (on|ues|rida) : on이거나 ues이거나 rida 인것들을 선택 -> Monday Tuesday Friday
    • (Mon|Tues|Fri)day : Mon이거나 Tues 이거나 Fri이면서 뒤에 day까지 선택 -> Monday Tuesday Friday
    • ..(n|es|i)day : n이거나 es거나 i인 문자들뒤에 day가 있고 그 문자 앞에있느 문자 두개 까지 선택 -> Monday Tuesday Friday

🔍 수량자

개념 설명 기타
* 0번이상 일치
+ 1번 이상 일치
? 0번 혹은 1번 일치 ?수량자에 추가하면 _게으른 수량자_로 만듬
{n} 정확히 n번 일치
{n,} 적어도 n번 일치
{m,n} 반복 횟수 m부터 n까지(m또는 n 생략가능) {2,3} == 2부터 3까지 반복횟수 매치

게으른 수량자 : 요소를 최대한 적게 찾는 것.

탐욕적 수량자 : 요소를 최대한 많이 찾음

Test : himymmeminehi

  • *
    • m*e : m or e가 0번이상 일치하는 것 -> himymmeminehi
  • +
    • m+e : 1번이상 일치하는 것 -> himymmeminehi
  • ?
    • m?e : m 혹은 e가 있거나 없거나 -> himymmeminehi

Test : -@- -AAA-- -- "_" -- _

  • .*
    • 모든 텍스트 선택 -> -@- -AAA-- -- "_" -- _
  • -A*-
    • 앞뒤로 -가 있으면서 A가 0개 이상 있음 -> -@- -AAA-- -- "_" -- _
  • \*+
    • *문자가 1개이상 있는 것
  • -@+-
    • -사이에 @가 1개이상 있는 것
  • [^ ]+
    • 공백이 없는 것이 1개 이상인 것 -> 띄어쓰기를 제외한 모든 텍스트 부분을 선택

Peter Piper picked a peck of pickled peppers

  • .{5}
    • 5글자가 선택됨 -> Peter Piper picked a peck of pickled peppers
  • [pti]{1,3}
    • p,t,i 중 문자가 1개에서 3개있는 경우 ->Peter Piper picked a peck of pickled peppers
  • [a-z]{3,}
    • 영어 소문자가 3개 이상 선택되는 경우 -> Peter Piper picked a peck of pickled peppers

📄 문자클래스

메타문자 설명 기타
\d 숫자와 매치
\D 숫자가 아닌 것과 매치
\s whitespace문자와 매치
\S whitespace문자가 아닌 것과 매치
\w 숫자+문자와 매치 공백은 여기에 포함 안됨
\W 숫자+문자가 아닌 것과 매치 공백은 여기에 포함 안됨
\b , .\ b word boundary 앞, 뒤
\B , .\B word boundary 앞 or 뒤 를 제외한 문자
  • 공백은 w에 포함되지 않는다.

+) 정규표현식을 학습하기위한 사이트

'SSAFY TechTalk Study' 카테고리의 다른 글

Day 16 : Web Socket(웹 소켓)과 WebRTC  (0) 2021.09.21
Day 15 : 타입 스크립트 (TypeScript)  (0) 2021.09.18
Day13 : HTTP Keep Alive  (0) 2021.09.10
Day 12 : UI와 UX  (0) 2021.09.05
Day11 : Transaction과 Isolation Level  (0) 2021.09.02