1. 정규표현식이란?
1) 의미
- Regular Expression : Regex
- 정규표현식은 "특정 패턴의 문자열"을 찾기 위한 표현 방식
- 보통 이런걸 형식 언어, formal languange라고 함
- 정규표현식을 이용하면, 특정 패턴에 매칭되는 문자열을 쉽게 찾아낼 수 있다.
- 정규표현식으로 아래와 같이 패턴을 만들어주면, 특정 문자열이 해당 패턴에 맞는지 체크할 수 있습니다.
2) 정규식(regex)을 이용한 패턴 연산
- 검색 패턴 기호를 사용하여 원하는 특정한 패턴을 찾거나 변환 및 특정한 패턴에 부합하는지 유효성 검증을 위해 사용
2. 참고 사이트
1) 위키피디아
정규 표현식 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
2) regexr
3) regexlib
4) regexone
5) zvon.org
http://zvon.org/comp/r/tut-Regexp.html#Pages~Contents
2. 정규표현식 사용법 정리
0) 정규표현식 형식
/패턴/플래그
- 슬래시(/) "사이"에는 매칭시킬 "패턴"을 써준다.
- 슬래시(/) "다음"에는 옵션을 설정하는 "플래그"를 써준다.
- 플래그는 하나만 찾을지, 모두 다 찾을지 등을 설정하는 옵션
1) Groups and ranges
| 또는
() 그룹
[] 문자셋, 괄호안의 어떤 문자든
[^] 부정 문자셋, 괄호안의 어떤 문가 아닐때
(?:) 찾지만 기억하지는 않음
* 이 패턴들을 이용하면 AND, OR, StartWith, EndWith 등과 다양한 조합을 만들 수 있음
2) Quantifiers
? 없거나 있거나 (zero or one)
* 없거나 있거나 많거나 (zero or more)
+ 하나 또는 많이 (one or more)
{n} n번 반복
{min,} 최소
{min,max} 최소, 그리고 최대
3) Boundary-type
\b 단어 경계
\B 단어 경계가 아님
^ 문장의 시작
$ 문장의 끝
4) Character classes
\ 특수 문자가 아닌 문자
. 어떤 글자 (줄바꿈 문자 제외)
\d digit 숫자
\D digit 숫자 아님
\w word 문자
\W word 문자 아님
\s space 공백
\S space 공백 아님
3. 정규표현식 기본 실습
1) 특정 문자열 검색
2) w (소문자) : 문자와 숫자 검색
3) W (대문자) : 한글과 특수문자 선택
4) .* : 모든 문자를 다 선택한다
4. regexr 사이트에서 실습해보기
1) 한글 검색
2) 전화번호 패턴 검색
3) email 패턴 검색 - 문자열 이용
4) email 패턴 검색 - w 이용 (더 짧게 작성 가능)
5) 유튜브주소로부터 비디오 ID 추출
6) lecture.member 테이블에서 유효하지 않은 번호(PHONE)만 조회
SELECT * FROM lecture.member
where birthday not regexp('\\d{9}') and
BIRTHDAY regexp('(\\d{4}-\\d{2}-\\d{2})|\\d{8}');
7) 정상적인 번호만 출력하는 4가지 방법
select * from member
where PHONE regexp('(\\d{2,3}[-.]?\\d{4}[-.]?\\d{4})');
select * from member
where PHONE regexp('\\d{2,3}[-.]?\\d{4}[-.]?\\d{4}') or phone is not null order by phone;
select * from member
where PHONE not regexp('\\d{2,3}[-.]?\\d{4}[-.]?\\d{4}') or phone is null order by phone;
select * from member
where PHONE regexp('[^(\\d{2,3}[-.]?\\d{4}[-.]?\\d{4})]');
8) 생일만 출력하는 방법
select * from member
where BIRTHDAY regexp('^\\d{4}-?\\d{2}-?\\d{2}$');
'🛢 3. Database > 3-1 Mysql' 카테고리의 다른 글
[Database] 13. DISTINCT와 COUNT, SQL 함수(문자열, 숫자, 날짜, 변환, NULL 관련) (0) | 2021.09.27 |
---|---|
[Database] 12. 페이징 처리 (0) | 2021.09.27 |
[Database] 10. 연산을 통한 데이터 조회 (0) | 2021.09.17 |
[Database] 09. 트랜잭션 처리 - COMMIT 과 ROLLBACK (0) | 2021.09.16 |
[Database] 08. JDBC 프로그래밍 (0) | 2021.09.11 |
댓글