- 개요
정규식은 일반 문자와 메타문자로 알려준 특수문자로 구성된 텍스트의 패턴
패턴은 텍스트를 검색할 때 특정 문자열뿐만 아니라 하나 이상의 다양하고 복잡한 문자열 검사가 가능.
1) 반복 메타 문자
메타 문자 |
의미 |
* |
0회 이상 반복 |
+ |
1회 이상 반복 |
? |
0회 or 1회 |
{m} |
m회 반복 |
{m,n} |
m회부터 n회까지 반복 |
예제
- ^a : a로 시작하는 문자열(ex - aa,ab,abc,abcde)
- a+b? : a가 적어도 한번 이상 반복되고, 뒤에 b가 오는 문자열로 b는 있어도 없어도됨 (ex – ab,aab,aaa)
2) 매칭 메타 문자
메타 문자 |
의미 |
. |
임의의 한문자 의미 |
^ |
문자열의 시작과 매치 |
$ |
문자열의 마지막과 매치 |
[ ] |
문자열 중 한 문자를 의미 |
| |
또는 or을 의미 |
{ } |
정규식을 그룹으로 묶음 |
예제
- a$ : a로 끝나는 문자열(ex – aa,ba,cba)
- ^ab$ : a로 시작하고 b로 끝나는 문자열(ex – ab,acb,adb,acgdb)
- ^ab*c$ : a로 시작하고 b가 없거나 한번이상 반복되고 c로 끝나는 문자역
- ^www : 시작 문자역이 www일 때 매칭(ex – www.test.com)
- ^[A-Za-Z]{3}$ : 정확하게 3문자를 매칭(ex – abc,def,ghi 등)
- a{2,3} : a가 2번이나 3번 반복되는 문자열(ex – aa,aaa,beaa,geaaa)
- ^a.{2,4}b$ : a로 시작되고 b로 끝나고 사이에 2-4개의 문자가 있는 문자열(ex – acdb,aertb,acdefb)
- ^(1|2|3|4|5|6|7|8|9|0)+$or^[0-9]+$ : 숫자로만 된 문자열
- t[ao]ook : taook,toook 와 부합
- ^[1-9][0-9]*$ : 처음 숫자가 0이 아니고 끝까지 숫자에만 부합. (ex - 가격체크)
- ^[0-9]+(\.[0-9]{2})?$ : 처음은 숫자, \.은 단지 점(.)만 표시.(ex - 3.23이나 3.38)
3) 이스케이프 기호
종류 |
의미 |
\\ |
역슬래쉬 문자 대체 |
\d |
모든 숫자와 매치 |
\D |
숫자가 아닌 문자와 매치 |
\s |
공백 문자 매치 |
\S |
공백문자가 아닌 것과 매치 |
\w |
숫자 또는 문자와 매치 |
\W |
숫자 또는 문자가 아닌 것과 매치 |
\b |
단어의 경계를 나타냄 |
\B |
단어의 경계가 아님을 나타냄 |
\A |
문자열의 처음에만 일치 |
\Z |
문자열의 끝에만 일치 |
예제
- ^01(?:0|1[6-9])-(?:\d{3}|\d{4})-\d{4}$ : 휴대폰 문자열 배열
- \d{6}\-[1-4]\d{6} : 주민 등록 번호 문자열
4) 최소 매칭을 위한 정규식
메타문자 |
의미 |
*? |
*?와 같으나 문자열을 취소로 매치 |
+? |
+와 같으나 문자열을 취소로 매치 |
?? |
?와 같으나 문자열을 최소로 매치 |
{m,n}? |
{m,n}과 같으나 문자열을 최소로 매치 |
5) 정규식 문자 클래스
클래스 |
의미 |
[[:alpha:]] |
[a-zA-Z]와 동일 |
[[:dlgit::]] |
모든 숫자 |
[[:alnum:]] |
모든 숫자나 문자 |
[[:space:]] |
공백 |
[[:punct:]] |
모든 구두점 기호 |
- 정규식 테스트 해보기
http://rubular.com/
'IT > 개발' 카테고리의 다른 글
ELK 트러블슈팅 note (0) | 2020.01.14 |
---|---|
클라우드에 관하여 정리 (0) | 2016.01.20 |
[C]파일 암/복호화 (0) | 2015.11.23 |
[C]char 형 포인터 - 배열 변경 (0) | 2015.11.23 |
[C]문자열 원하는곳에서 2번 자르기 (0) | 2015.11.23 |
[C]1초마다 시간 다르게 셋팅 (0) | 2015.11.23 |
[C]파일 시저 암복호화 (1) | 2015.02.03 |
[android]루팅없이 화면 폰 동영상 찍는법(4.4이상) (0) | 2015.01.20 |
[mqtt]java client SSL 적용하기 (0) | 2015.01.15 |