정규표현식 regex 은 Regular Expression 의 줄임말.

1950년 Stephen Cole Kleene에 의해 개발됨

 

1. ^ 

문자열의 시작에 있는 문자

 

2. $

문자열의 마지막에 있는 문자

 

3. / (백슬래쉬)

/ 다음에 오는 표현식 (ex ^, $ 같은) 들을 문법적인 요소로서 작동하게 하지 않고 하나의 문자로 보게 만듬

escape 라고 부른다고 함

 

4. . (점)

어떠한 문자건, 공백이건 특수문자든 모든것을 포함

Q) ......

sol) 6개의 길이를 가진 문자 어느것이든 가능

 

5. [ ]

bracket 안에 있는 문자를 포함하는걸 찾음

Q) "How do you do?"에서 [oyu] 

sol) o, o, you, o

Q) "How do you do?" [owy][owy]

sol) ow, yo

 

6. [ - ]

[C-K] 하면 [CDEFGHIJK] 랑 똑같은 것

[C-Ka-d2-6] 하면 [CDEFGHIJKabcd23456] 이랑 똑같음

 

7. [^] (대괄호 안의 캐럿)

제외하고 나머질 찾음.

[^CD] 라고 쓰면 C, D를 제외한 모든걸 찾는 것

 

8. ( | )

(ab|cd|ed) 라고 하면 ab, cd, ed를 찾음

(Mon|Tues|Wednes)day 라고 하면 Monday, Tuesday, Wednesday 를 찾음

 

9. *

* 앞에 있는 것이 0 또는 여러개 존재하는지?

Q) .*

sol) .............. 와 같은것이니까 모든것을 전부 포함

Q) -A*-

sol) --, --A--, --AA--, --AAA-- 등 이런것들을 포함

 

10. +

+ 앞에 있는 것이 1개 이상으로 존재하는지?

( * 와 차이점은 *은 0개 있어도 판별함)

 

11. ?

? 앞에 있는 것이 0개 이거나 1개 인지?

( * 와 + 와의 차이점은 ?는 여러개를 판별하지 않음)

tip) *, +, ? 는 수량자 라고 부름

 

12. { }

{n} : 중괄호 앞에 있는 녀석이 n개 만큼인걸 찾음

{n,} : 중괄호 앞에 있는 녀석이 n개 이상인걸 찾음

{n,m} : 중괄호 앞에 있는 녀석이 n 이상 m 이하인걸 찾음

ex) AB*A 는 AB{0,}A 와 같다

ex) AB+A 는 AB{1,}A 와 같다 

ex) AB?A 는 AB{0,1}A 와 같다

 

13. 수량자(*, +, ?) 뒤에 붙은 ?

*? 하면 0개를 뜻함. 왜냐면 *은 0~여러개 를 뜻하는데, 그 중 가장 작은 0을 뜻하게 만드는 것

+? 하면 1개를 뜻함. 이유는 위와 같이 +는 1~여러개 를 뜻하는데, 그 중 가장 작은 1을 뜻함

?? 하면 0개를 뜻함. 이유는 위와 같다

 

(*, +, ?)는 탐욕적인(greedy) 수량자라서 가장 넓은 범위의 문자열을 가져옴.

ex) "<div>test</div><div>test2</div>" 라는 텍스트에서

<div>.+</div> 를 하면 "<div>test></div><div>test2</div>" 를 들고오지만

<div>.+?</div> 를 하면 "<div>test</div>" 를 가져온다.

이러한 ?를 게으른(lazy) 수량자 라고 함.

 

14. /w

word. 알파뱃, 숫자, "_" 를 포함하는 단어

[A-z0-9_] 랑 똑같음.

 

15.  /W

/w의 정반대. word가 아닌 것. 공백, 특수문자, 숫자를 포함하는 단어

 

16. /d

digit. 0~9를 포함하는 단어

 

17. /D

digit이 아닌 것. /d의 반대.

 

18. /b

boundary. 앞에 붙이면 앞에있는걸, 뒤에 붙이면 뒤에있는걸 체크

 

19. /B

/b의 반대

 

20. /A

가장 앞의 것을 체크

^와 다른점은, ^은 멀티라인일 때 앞에 붙은애를 모두 포함한다면 /A는 1개만 포함한다.

 

21. /Z

가장 뒤에 것을 체크

$와 다른점은, $은 멀티라인일 때 뒤에 붙은애를 모두 포함한다면 /Z는 1개만 포함한다.

 

22. (?="문자")

"문자" 를 포함하여 검색을 하지만, 결과로 포함을 시키지는 않는다.

"문자" 가 아니어도 /w /d /W /D 이런녀석들이 들어가도 됨.

'TIL' 카테고리의 다른 글

객체지향 개발 5대 원리, SOLID  (0) 2022.10.21
동기 vs 비동기, Blocking vs Non-Blocking  (0) 2022.10.19
csv insert with MySQL (Load data infile) 방법  (0) 2022.08.30
왜 Hello World ?  (0) 2021.12.25
Docker 를 왜 쓸까  (0) 2021.12.25

+ Recent posts