정규표현식(Regular Expression)

kimjaewon·2023년 4월 25일
0

정규표현식이란?

날이 갈수록 개인정보 보호에 관련하여 보안 정책을 강화하고 있음에 따라 특정한 규칙을 가진 문자열을 표현하여 사용하는 형식의 언어이다
문자열 검색, 대체, 추출 등과 같은 작업을 수행할때 유용하게 사용한다

검색

특정 패턴을 가진 문자열 찾는데 사용, 예를 들어 이메일 주소전화번호와 같은 패턴을 검색할 수 있다

대체

문자열에서 특정 패턴을 찾아 다른 문자열로 대체할 수 있다
예를 들어 전체 문서에서 특정 단어를 찾아 모두 대문자로 바꾸는 등의 작업에서 사용한다

추출

문자열에서 특정 부분을 추출할때 예를 들어 로그 파일에서 날짜와 시간 정보추출하는 작업 등에 사용한다

유효성 검사

입력된 문자열이 특정한 패턴에 맞는지 검사하는데 사용되며
예를 들어 이메일 주소URL 주소와 같은 데이터 유효성 검사하는 작업 등에 사용한다


정규 표현식의 사용되는 용어 기호는 Meta 문자라고 표현한다
표현식에서 내부적으로 특정의미를 가지는 문자를 말하며 간단하게 아래 표와 같다

Meta 문자들 중에서 좀 더 특수하게 사용되는 문자들이 존재 하는데 '[]' 는 내부에 지정된 문자열의 범위 중에서 한 문자만을 선택한다는 의미이다

Meta 문자를 사용하다보면 다른 의미를 가지고 동작할 수 있으므로 잘 확인하고 사용해야하며 좀 더 특별한 용도로 사용되는 것들은 아래 표와 같다

정규표현식을 사용할 때 Flag 라는 것이 존재하는데 Flag를 사용하지 않으면 문자열에 대해서 검색을 한번만 처리하고 종료하게 된다 Flag 는 다음과 같은 것들이 존재한다


사용 예제

개별 숫자 - /[0-9]/g
전체에서 0~9사이에 아무 숫자 '하나' 찾음
``
개발 문자 - /[to]/g
전체에서 t 혹은 o 를 모두 찾음

단어 - /filter/g
전체에서 f 따로 i 따로 찾는게 아니라 'filter' 라는 단어에 매칭되는것을 찾음
단어 제외 - /\b(?:(?!to)\w)+\b/g
전체에서 'to' 라는 단어를 빼고 다른 단어 매칭 / 확인결과 "Tutorial" 도 제외됨
단어 제외 - \b(?!\bto\b)\w+\b
전체에서 'to' 라는 단어를 빼고 다른 단어 매칭 / 확인결과 "Tutorial" 는 제외 안됨 이게 더 정확하다고 볼수있을듯

이메일 - /^0-9a-zA-Z@0-9a-zA-Z.[a-zA-Z]{2,3}$/i
'시작을' 0~9 사이 숫자 or a-z A-Z 알바펫 아무거나로 시작하고 / 중간에 - . 같은 문자가 있을수도 있고 없을수도 있으며 /
그 후에 0~9 사이 숫자 or a-z A-Z 알바펫중 하나의 문자가 없거나 연달아 나올수 있으며 / @ 가 반드시 존재하고 /
0-9a-zA-Z 여기서 하나가 있고 / 중간에 -
. 같은 문자가 있을수도 있고 없을수도 있으며 / 그 후에 0~9 사이 숫자 or a-z A-Z 알바펫중 하나의
문자가 없거나 연달아 나올수 있으며 / 반드시 . 이 존재하고 / [a-zA-Z] 의 문자가 2개나 3개가 존재 / 이 모든것은 대소문자 구분안함

전화번호 - /^\d{3}-\d{3,4}-\d{4}$/
시작을 숫자 3개로하며 / 중간에 하이픈 - 하나 존재 / 숫자가 3~4개 존재하며 / 하이픈 하나 존재 / 숫자 4개로 끝남
URL - ^(https?):\/\/([^:\/\s]+)(:([^\/]))?((\/[^\s/\/]+))?\/?([^#\s\?])(\?([^#\s]))?(#(\w))?$
^(https?):\/\/
([^:\/\s]+)
(:([^\/]
))?
((\/[^\s/\/]+))?\/?([^#\s\?])(\?([^#\s]))?(#(\w))?$

profile
올라가자

0개의 댓글