정규표현식이란?
- 특정한 규칙이나 문자열의 찾는데 유용
- 많은 프로그래밍 언어나 편집기가 지원함.
- 대표적으로 회원가입 양식을 판별할 때 사용
정규 표현식의 사용
정규표현식은 대소문자를 구별한다.
^ : 줄의 시작에 있는 일치하는 문자를 찾음.
- ^who ⇒ 줄의 처음에 who로 시작하는 문자를 찾음.
$ : 문자열이 끝나는 위치를 지정.
- abc$ ⇒ abc로 끝나는 문자
- /$ ⇒ $문자를 의미
- ^/$ ⇒ $문자로 시작하는 것을 찾음.
. : 점의 갯수만큼 어떤 문자(특수문자,공백)이든 매칭. 와일드카드와 같음.
- ...... ⇒ 어떠한 문자와 상관없이 6개를 대신하여 찾음.
- O.K. 라는 문자열에 정규식으로 . 을 정규표현식으로 사용하면 O.K.이 한문자씩 모두 탐색됨.
- .문자를 지정하려면 . 을 사용[문자] : 대괄호 안의 모든 문자를 찾아준다.
- [oyu] ⇒ o, y, u 가 포함된 모든 문자를 찾는다.
- [oyu]. ⇒ o나 y나 u로 시작하는 두문자를 찾는다.
- [owy][yow] ⇒ 각 그룹에 한 문자씩 포함되어 있는 두 문자를 찾음. ex) oy, ww, oo 등
- [C-K] ⇒ C와 K 범위 사이에 있는 한 문자를 탐색, [CDEFGHIJK]와 같다.
- [C-Ka-d2-6] ⇒ C에서 K, a에서 d, 2에서 6 사이의 한문자 탐색
[^문자] : 괄호안에 있는 문자를 제외하고 탐색
- [CDghi45] ⇒ CDghi45를 제외한 문자를 탐색
- [^W-Z] ⇒ W부터 Z를 제외한 문자를 탐색
(문자들|문자들|문자들) : 괄호안에 포함되는 단어를 찾는다.
- Monday Tuesday Friday 라는 소스가 있을 때.
- (on|ues|rida) ⇒ Monday Tuesday Friday
- (Mon|Tues|Fri)day ⇒ Monday Tuesday Friday
*, +, ? : 수량자라고 하며 설명은 아래를 참고
- ab ⇒ b문자 앞에 0부터 ∞ 만큼의 a문자가 올 수 있음을 의미(0~ ∞) b ab aab aaab*
- a+b ⇒ b문자 앞에 무조건 한개 이상의 a문자가 올 수 있음을 의미(1 ~ ∞) ex) ab aab aaab
- a?b ⇒ b문자 앞에 0 또는 1개의 문자가 올 수 있음을 의미(0 ~ 1) ex) b ab
- .* ⇒ 공백앞에 .(어떤 한개의 문자)가 없을 수도 있을 수도 있음을 의미, 한줄 전체가 탐색된다.
- -A- ⇒ -와 -사이에 A가 0~∞개가 있을 수 있음을 의미 ex) — -A- -AA-*
- [-@] ⇒ - 또는 @가 0~∞개 올 수 있음을 의미 ex) -@ -@- @@ @-@ —-@*
- *+ ⇒ ''문자가 한개 이상 올 수 있음을 의미 ex) * * *
- -@+- ⇒ @문자가 하나 이상 올 수 있음을 의미 ex) -@- -@@- -@@@-
- [^ ]+ ⇒ 공백이 아닌 문자를 하나 이상 탐색 ex) -@@@- * ""*
문자{숫자} : 괄호 안에 있는 숫자만큼의 문자를 탐색
- .{5} ⇒ 어떠한 문자(.)든 다섯 문자를 탐색
- [els]{1,3} ⇒ e, l, s의 조합으로 1~3개의 문자를 탐색
- [a-z]{3,} ⇒ a~z문자에서 3개 이상인 문자조합을 탐색
수량자(*,+,?) 과 ?의 결합 : 수량자의 범위 중 최소값으로 탐색
- r.* ⇒ r뒤 모든 문자들이 탐색된다.
- r.? ⇒ 수량자와 ?가 합쳐지면(?) 최소 수량에 해당, ?(0~1)은 최소가 0이므로 .(아무문자)가 0개임을 의미. 결과적으로 r문자만 탐색한다.
조합
- AB*A = AB{0,}A AB+A = AB{1,}A AB?A = AB{0,1}A
- r.? ⇒ 아무문자가 0개 또는 1개 올 수 있음. ex) r ri rk rf
- r.?? ⇒ ?(0~1)가 가지고 있는 최소(?)를 선택하여 r과 아무문자 0개를 탐색. 결론적으로 r문자만 탐색된다.
\w : word의 약자이며 a~z, A~Z, 0~9, 중 한개 문자를 의미. = [A-z0-9]
1. \w{5} ⇒ 문자 5개를 탐색
\W : \w(word)가 아닌 한개 문자를 의미
\d : digit의 약자이며 숫자 한개를 의미 = [0-9]
\b : word boundary의 약자이며 문자와 결합되었을때 단어의 앞이나 끝을 지정
- \b. ⇒ 단어의 처음인 어떤 문자 한개(.)를 탐색한다. ex) cat concat
- .\b ⇒ 단어의 끝인 어떤 문자 한개(.)를 탐색한다. ex) cat concat
\B : not word boundary이며 \b와 반대의 결과가 탐색된다.
- \B. ⇒ 단어의 처음을 제외한 어떤 문자 하나(.) 를 탐색한다. ex) cat concat
- \B.\B ⇒ 단어의 처음과 끝을 제외한 어떤 문자 하나(.)를 탐색한다. ex) cat concat
\A : 행의 시작을 의미
- \A... ⇒ 행의 시작에서 문자 세개를 탐색한다.
\Z : 행의 끝을 의미
?=패턴 : 패턴을 활용하여 탐색
- \w+(?=X): X문자를 이용하여 단어(word,\w)를 찾음. ex) AAAX-aaax-111
- \w+ : 한개 문자 이상의 단어를 탐색한다. ex) AAAX-aaax-111
- \w+(?=\w): 단어를 활용하여 문자가 한개 이상인 단어를 찾음 ex) AAAX-aaax-111
참고사이트