[정규식-elements 설명]
1. 참고site : ( http://zvon.org/comp/r/tut-Regexp.html )
2. elements 설명
^ : ^who - 첫번째 시작 문자(열)찾기
$ : who$ - 마지막 시작 문자(열)찾기
\ : escape
\$ - $는 정규식 특수기호 이지만 \를 앞쪽에 붙이면서
\다음으로 나오는 정규식기호를 단순한 문자로 인식하게 한다.
^\$ - 첫번재 시작문자 $를 찾아줌
\$$ - 마지막 문자$를 찾아줌
\\ - \문자를 찾아줌
. : 모든 문자를 매칭
...... : . 이 6개이면 6개 문자를 매칭 (6개 문자열로 반복됨)
\..\. : \. - 문자 .을 매칭
. - 이때 . 은 어떠한 문자든 매칭
\. - 문자. 을 매칭
\..\. - . 과 . 을 매칭하고, . 과 . 사이의 모든 문자를 매칭
[ ] : [oyu] - 검색하려는 문자열중에서 o, y, u가 존재시 모두 매칭
: [dH]. - 검색하려는 문자열중에서 d,H 가 존재 하는 모두 매칭 하면서 . 에 의해서 바로 다음문자 1개를 매칭
: [owy][you] - 검색하려는 문자열중에서 o,w,y가 존재하면서 y,o,u가 존재 하는 문자열 매칭
[ - ] : range
: [C-K] - 검색하려는 문자열중에서 C~K 범위의 문자가 존재시 모두 매칭
: [C-Ka-d2-6] - 검색하려는 문자열중에서 C~K, a~d, 2~6 범위의 문자가 존재시 모두 매칭
[ ^ ] : not (부정)
: [^cdGHI45] - 검색하려는 문자열중에서 c,d,G,H,I,4,5가 아닌 문자가 존재 시 모두 매칭
: [^W-Z] - 검색하려는 문자열중에서 W~Z가 아닌 문자가 존재 시 모두 매칭
( ) : (on|use|rida) - 검색하려는 문자열중에서 on, use, rida 가 존재하는 문자열을 모두 매칭
(Mon|Tues|Fri)day - 검색하려는 문자열중에서 Monday, Tuesday, Fridday가 존재하는 문자열을 모두 매칭
..(id|esd|nd)ay - 검색하려는 문자열중에서 .. 문자열2개와 iday,esday, nday 가 존재문자열을 모두 매칭
(검색 문자열 : Monday Tuesday Friday)
*, +, ? : 수량 (Quantifiers)
* : 0~n : 0~n개 존재 시 매칭
a*b : b앞쪽에 a가 0~n개 존재 시 매칭
.* : . (모든문자)가 0~n개 존재 시 매칭
-A*- : "- 앞쪽"에 A가 0~n개 존재할 수 있고 "그 앞쪽에 -" 는 반드시 1개 존재 해야 됨
(위 설명 재 해석 : -A*-에서 "- 앞쪽"이란 -> 맨 뒤에 있는 - 를 가리킴.
"그 앞쪽에 -" 이란 -> 맨 앞쪽에 있는 -를 가리킴)
[-@]* : 검색 문자열중에 -, @가 0~n개 존재 시 매칭
+ : 1~n : 1~n개 존재 시 매칭
a+b : 검색 문자열중에서 b앞쪽에 a가 1~n개 존재 시 매칭
\*+ : 검색 문자열중에서 *문자가 1~n개 존재 시 매칭
-@+- : - - 사이에 @가 1~n개 존재 시 매칭
[^ ]+ : 공백이 아닌것이 1~n개 존재 시 매칭 (즉, 공백이 하나도 없으면 매칭)(공백을 제외한 모든문자가 매칭)
? : 0 ~ 1개 존재 시 매칭
a?b : b앞쪽에 a가 0~1개 존재 시 매칭
-X?XX?X : - : 앞쪽에 - 존재하면서
X? : X가 0~1개 존재
X : X가 1개 존재
X? : X가 0~1개 존재
X : 맨뒤에 X가 하나 존재
-@?@?@?- : - : 앞쪽에 - 존재하면서
@? : @가 0~1개 존재
@? : @가 0~1개 존재
@? : @가 0~1개 존재
- : 맨뒤에 -가 하나 존재
{ } : 1~n개 존재 시 매칭
.{5} : 어떠한 문자든 5글자 존재 시 매칭
[els]{1,3} : 검색 문자열중에서 e,l,s 가 1 또는 3개 일 경우 매칭
[a-z]{3,} : 검색 문자열중에서 a~z까지 3개 이상 문자일 경우 매칭
AB{0,}A = AB*A
AB{1,}A = AB+A
AB{0,1}A = AB?A
r.* : 검색 문자열중에서 r - r문자가 존재 하면서
.* - .이 0~n개 존재 시 매칭
r.*? : 검색 문자열중에서 r - r문자가 존재 하면서
.* -
? - 수량자 뒤에 ?가 오면 기존 ? (0~1) 에 의미가 달라짐
- 그래서 *? 는 *는 0~1개 인데, 이때 뒤쪽 1은 버리고, 앞쪽 0만 취해서
r은 존재 하면서 뒤쪽 문자가 없는 문자 매칭 (즉, r문자 하나만 매칭)
r.+ : 검색 문자열중에서 r - r문자가 존재 하면서
.+ - .이 1~n개 문자 존재 시 매칭
r.+? : 검색 문자열중에서 r - r문자가 존재 하면서
.+ -
? - 수량자 뒤에 ?가 오면 기존 ? (1~n)에 의미가 달라짐
- 그래서 +?는 +는 1~n 개 인데, 이때 뒤쪽 n은 버리고, 앞쪽 1만 취해서
r은 존재 하면서 뒤쪽 문자 1개 문자 매칭
r.? :
r.?? :
w,W, d, D : character classes
\w : word(단어), alphanumeric 문자들을 매칭
\w* : alphanumeric 문자이 0~n개 존재 시 매칭
[a-z]\w* : a~z문자열이 존재 하면서 alphanumeric 문자이 0~n개 존재 시 매칭
\w{5} : alphanumeric 문자가 5 존재 시 매칭
\W : not word(단어가 아님), alphanumeric 문자들이 아닌 경우 매칭
\d : digit(숫자)
\D : not digit(숫자가 아님)
b, B : word boundery
\b :
\B :
\A : 시작
\A... : 시작에서 3개의 문자가 매칭
\Z : 마지막
\Z... : 마지막에서 3개의 문자가 매칭
\w+(?=X) : \w+ : alphanumeric 문자들이 1~n개 존재 하면서
?= : 뒤쪽 문자(X)가 존재 하면 매칭. 단, 문자(X)는 선택에서는 제외
\w+ :
\w+(?=\w) : \w+ : alphanumeric 문자들이 1~n개 존재 하면서
?= : 뒤쪽 alphanumeric 문자(\w)가 존재 하면 매칭. 단, alphanumeric 문자(\w)는 선택에서는 제외