[TIL] 정규표현식 REGEXP

tolerance·2020년 8월 21일
1

MySQL

목록 보기
3/8
post-thumbnail

아직 강의 등을 통해 공식적으로 배우지 않아서 최대한 피하고 싶었지만, 해커랭크 Weather Observation 문제를 내리 풀다 결국 검색하고 말았다. 몇 개 알게 된 사실을 기록해둔다.

내가 오늘 이해한 정규표현식

  • 정규표현식은 검색 패턴을 설명하는 특수 문자열이다. 패턴을 기반으로 텍스트 문자열(문자, 단어 등)을 식별하는 간결하고 유연한 방법을 제공하는 도구다.
  • 정규표현식을 통해 이메일, IP 주소, 전화번호, 주민번호 등 특정 '패턴'이있는 모든 항목을 검색할 수 있다.
  • 정규표현식 Regular Expression을 줄여 REGEXP로 표현한다.
  • REGEXP는 RLIKE와 동일하게 사용할 수 있으며, 반대말은 NOT REGEXP다.
  • 정규표현식의 장점은 LIKE처럼 연산자에 %나 _이 있는 고정 패턴 이상의 문자열 검색이 가능하다는 점이다. 유연한 패턴을 구성하기 위한 다양한 메타 문자열이 있다.
메타 문자열 | 행동
---------+-----------------------------------
^      	 | 검색된 문자열의 시작 위치와 일치
$    	 | 검색된 문자열의 끝 위치와 일치
.    	 | 단일 문자와 일치
[…]    	 | 대괄호 안에 지정된 모든 문자와 일치
[^…]   	 | 대괄호 안에 지정되지 않은 모든 문자와 일치
p1 | p2  | p1 또는 p2 패턴과 일치
*   	 | 앞의 문자와 0 번 이상 일치
+   	 | 선행 문자를 한 번 이상 일치
{n}   	 | n개의 이전 문자 인스턴스와 일치
{m, n}   | 이전 문자의 인스턴스 수 m에서 n까지 일치

예시 - 해커랭크 Weather Observation Station 9

SELECT DISTINCT city
FROM station
WHERE city NOT REGEXP '^[aeiou]'

위 쿼리를 통해 a,(또는) e, i, o, u로 시작하지 않는 문자열만 나타나게 된다.

더 알아보기

  1. https://www.mysqltutorial.org/mysql-regular-expression-regexp.aspx/
  2. https://www.geeksforgeeks.org/mysql-regular-expressions-regexp/
profile
매일. 나. 배운다. 조금씩

0개의 댓글