--- RegularExpressions
+++ RegularExpressions
@@ -1,1 +1,256 @@
+= RegularExpressions
+== 참고 ==
+ * https://opentutorials.org/course/909/5143
+ * http://zvon.org/
+ * https://www.regexpal.com/
+
+
+== 문법 ==
+ * 특정 케이스로 시작 : `^`
+ * Source [[[#!Text
+who is who
+]]]
+ * `^who` : who로 시작
+ * `^w` : w로 시작
+ * `^[a-zA-Z]` : 영문으로 시작
+ * `^[0-9]` : 숫자로 시작
+
+
+
+ * 특정 케이스로 끝 : `$`
+ * Source [[[#!Text
+who is who
+]]]
+ * `who$` : who 문자로 끝
+ * `[a-zA-Z]$` : 영문으로 끝
+ * `[0-9]$` : 숫자로 끝
+
+
+
+ * 이스케이프 : `\`
+ * Source [[[#!Text
+$12$ \-\ $25$
+]]]
+ * `\$` : $ 문자 찾기
+ * `^\$` : $ 문자로 시작
+ * `\$$` : $ 문자로 끝
+ * `\\` : \ 문자 찾기
+
+
+
+ * 모든 문자 : `.`
+ * Source [[[#!Text
+Regular expressions are powerful!!!
+O.K.
+]]]
+ * `.` : 아무 문자
+ * `...` : 아무 문자 3자리
+ * `\..\.` : `.문자.` 케이스 찾기
+
+
+
+ * 후보군 : `[]`
+ * `[]`는 문자 하나를 의미
+ * Source [[[#!Text
+How do you do?
+]]]
+ * `[oyu]` : o,y,u 문자 찾기
+ * `[dH].` : `d 또는 H` + 문자 하나
+ * `[owy][yow].` : `o 또는 w 또는 y` + `y 또는 o 또는 w`
+
+
+
+ * 범위 : `-`
+ * `[]`는 문자 하나를 의미
+ * Source [[[#!Text
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
+abcdefghijklmnopqrstuvwxyz
+0123456789
+]]]
+ * `[C-K]` : 대문자 C~K 문자 찾기
+ * `[CDEFGHIJK]` : `C,D,E,F,G,H,I,J,K` 문자 찾기
+ * `[a-d]` : `a,b,c,d` 문자 찾기
+ * `[2-6]` : `2,3,4,5,6` 문자 찾기
+ * `[C-Ka-d2-6]` : `C~K, a~d, 2~6` 문자 찾기
+
+
+
+ * 부정 : `[^]`
+ * `^`이 `[]` 안에 있으면 not의 의미를 가짐
+ * Source [[[#!Text
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
+abcdefghijklmnopqrstuvwxyz
+0123456789
+]]]
+ * `[^CDghi45]` : `C,D,g,h,i,4,5`이 아닌 문자
+ * `[^W-Z]` : `W, X, Y, Z`가 아닌 문자
+
+
+
+ * 서브패턴 : `(|)`
+ * Source [[[#!Text
+Monday Tuesday Friday
+]]]
+ * `(on|ues|rida)` : `on, ues, rida` 문자 찾기
+ * `(Mon|Tues|Fri)day` : 중복으로 들어가는 day를 빼서 패턴을 간소화 시킴.
+ * `..(id|esd|nd)ay` : 중복으로 들어가는 day를 빼서 패턴을 간소화 시킴.
+
+
+
+ * 수량자 : `*, +, ?`
+ * `*` : `*` 앞에 등장하는 패턴이 0 ~ 여러개(있을 수 있고 없을 수 있다)
+ * `+` : `+` 앞에 등장하는 패턴이 1 ~ 여러개(하나 이상이 있어야 한다)
+ * `?` : `?` 앞에 등장하는 패턴이 0 ~ 1(없거나 하나만 있어야 한다)
+ * Source [[[#!Text
+aabc abc bc
+-@- *** -- "*" -- *** -@-
+-@@@- * ** - - "*" -- * ** -@@@-
+--XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-
+]]]
+ * `a*b` : b앞에 a가 있거나 없는 케이스
+ * `a+b` : b앞에 a가 하나 이상 있는 케이스
+ * `a?b` : b앞에 a가 없거나 하나만 있는 케이스
+ * `[-@]*` : -, @가 있거나 없는 케이스
+ * `\*+` : *가 하나 이상인 케이스
+ * `-@+-` : 시작과 끝이 - 이면서 @가 하나 이상인 케이스
+ * `[^ ]+` : 공백이 아닌 케이스
+ * `-X?XX?X` : -으로 시작하고 X로 끝나며 그 사이에 X가 있으며 X의 좌우로 X가 0~1개까지만 있는 케이스
+ * `-@?@?@?-` : 시작과 끝이 -이고 @가 0~3개인 케이스
+ * `[^@]@?@` : @가 아닌 문자로 시작하면서 @가 0~1개면서 @로 끝나는 케이스
+
+
+
+ * 수량자 : `{숫자}`
+ * `{숫자}` : 중괄호 안의 숫자 만큼의 수량
+ * `{숫자,숫자}` : 중괄호 안의 첫번째 숫자 ~ 두번째 숫자까지의 수량
+ * `{숫자,}` : 중괄호 안의 첫번째 숫자 이상인 수량
+ * Source [[[#!Text
+One ring to bring them all and in the darkness bind them
+]]]
+ * `.{5}` : 어떤 문자건 다섯 글자
+ * `[els]{1,3}` : e,l,s 글자들이 1~3개 사이인 글자
+ * `[a-z]{3,}` : 소문자 영문들이 3개 이상인 글자
+
+
+
+ * 수량자 : `{숫자}`
+ * `{숫자}` : 중괄호 안의 숫자 만큼의 수량
+ * `{숫자,숫자}` : 중괄호 안의 첫번째 숫자 ~ 두번째 숫자까지의 수량
+ * `{숫자,}` : 중괄호 안의 첫번째 숫자 이상인 수량
+ * Source [[[#!Text
+One ring to bring them all and in the darkness bind them
+]]]
+ * `.{5}` : 어떤 문자건 다섯 글자
+ * `[els]{1,3}` : e,l,s 글자들이 1~3개 사이인 글자
+ * `[a-z]{3,}` : 소문자 영문들이 3개 이상인 글자
+ * `r.*` : r + 모든 문자(0~여러개)
+ * `r.*?` : r인 문자(*뒤에 ?가 붙으면 *의 의미가 0~여러개에서 0으로 변경됨.)
+ * `r.+` : r + 모든 문자(1~여러개)
+ * `r.+?` : r + 모든 문자 1개(+뒤에 ?가 붙으면 +의 의미가 1~여러개에서 1로 변경됨.)
+ * `r.?` : r + 모든 문자(0~1개)
+ * `r.??` : r인 문자(?뒤에 ?가 붙으면 ?의 의미가 0~1개에서 0으로 변경됨.)
+
+
+
+ * 단어 : `\w`
+ * 알파벳 + 숫자 + 언더바(_)
+ * Source [[[#!Text
+A1 B2 c3 d_4 e:5 ffGG77--__--
+]]]
+ * `\w` : 단어 선택
+ * `[a-z]\w*` : 소문자로 시작하면서 단어
+ * `\w{5}` : 단어 다섯자리
+
+
+
+ * 단어가 아닌 것 : `\W`
+ * not word
+ * Source [[[#!Text
+AS _34:AS11.23 @#$ %12^*
+]]]
+ * `\W` : 단어가 아닌것 선택
+
+
+
+ * 공백 : `\s`
+ * Source [[[#!Text
+Ere iron was found or tree was hewn,
+When young was mountain under moon;
+Ere ring was made, or wrought was woe,
+It walked the forests long ago.
+]]]
+ * `\s` : 공백 검색
+
+
+
+ * 공백이 아닌것 : `\S`
+ * Source [[[#!Text
+Ere iron was found or tree was hewn,
+When young was mountain under moon;
+Ere ring was made, or wrought was woe,
+It walked the forests long ago.
+]]]
+ * `\S` : 공백이 아닌 것 검색
+
+
+
+ * 숫자 : `\d`
+ * Source [[[#!Text
+Page 123; published: 1234 id=12#24@112
+]]]
+ * `\d` : 숫자인 것
+
+
+
+ * 숫자가 아닌 것 : `\D`
+ * Source [[[#!Text
+Page 123; published: 1234 id=12#24@112
+]]]
+ * `\D` : 숫자가 아닌 것
+
+
+
+ * 단어의 경계? : `\b`
+ * Source [[[#!Text
+Ere iron was found or tree was hewn,
+When young was mountain under moon;
+Ere ring was made, or wrought was woe,
+It walked the forests long ago.
+cat
+concat
+]]]
+ * `\b.` : 단어의 모든 시작 문자
+ * `.\b` : 단어의 모든 끝 문자
+ * `\bcat` : cat으로 시작하는 문자
+ * `cat\b` : cat으로 끝나는 문자
+
+
+
+ * 단어의 경계?가 아닌 : `\B`
+ * Source [[[#!Text
+Ere iron was found or tree was hewn,
+When young was mountain under moon;
+Ere ring was made, or wrought was woe,
+It walked the forests long ago.
+cat
+concat
+]]]
+ * `\B.` : 단어의 모든 시작문자의 다음부터 검색
+ * `.\B` : 단어의 모든 끝 문자 이전까지 검색
+
+
+
+ * 시작과 끝 : `\A`, `\Z`
+ * Source [[[#!Text
+Ere iron was found or tree was hewn,
+When young was mountain under moon;
+Ere ring was made, or wrought was woe,
+It walked the forests long ago.
+cat
+concat
+]]]
+ * `\A...` : 전체 문장의 시작 세글자
+ * `^...` : 각 문장별 시작 세글자
+ * `...\Z` : 전체 문장의 끝 세글자
+ * `...$` : 각 문장별 끝 세글자