์ ๊ท์์ด๋?
(Regular expressions, Regex, Regexp)
: ๋ฌธ์ ํจํด์ ํํํ๋ ๊ณต์์ผ๋ก, ์ผ์ข
์ ํ์ ์ธ์ด.
: ํน์ ๊ท์น์ด ์๋ ๋ฌธ์์ด ์งํฉ์ ์ถ์ถํ ๋ ์์ฃผ ์ฌ์ฉ๋๋ ๊ธฐ๋ฒ.
: ์ ๊ท์์ JavaScript, Java, Oracle, Python, R, Perl, C, C# ๋ฑ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
<์ ๊ท์ ์ฌ์ฉ ์์>
- ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ ( ํธ๋ํฐ ๋ฒํธ, ์ด๋ฉ์ผ ํ์, ์ฃผ์ ํ์, ์๊ฐ๋ฌธ์์ด ๋ฑ)
- ์น ์คํฌ๋ํ (ํน์ ํจํด์ผ๋ก ์ ๋ณด๋ฅผ ์คํฌ๋ฉ)
- ๋ฌธ์์ด ํ์ฑ(URL ์ฟผ๋ฆฌํ๋ผ๋ฏธํฐ ํ์ฑ, ๊ดํธ ํ์ฑ ๋ฑ) ๋ฐ ๋ฌธ์์ด ๋์ฒด(๋์๋ฌธ์ ๋ณ๊ฒฝ ๋ฑ)
- ๋ฌธ๋ฒ ํ์ด๋ผ์ดํ , ํ์ผ๋ช ๋ณ๊ฒฝ, ํจํท ์ค๋ํ ๋ฑ ๋ฌธ์์ด์ ๋ค๋ฃจ๋ ์ฌ๋ฌ ์์ฉ๋ก์ง์์ ์ฌ์ฉ ๊ฐ๋ฅ.
1. ๋ฉํ๋ฌธ์
๋ฉํ๋ฌธ์๋ ๋ฌธ์๋ฅผ ์ค๋ช ํ๊ธฐ ์ํ ๋ฌธ์.
์ ๊ท์์์ ์ฌ์ฉ๋๋ ๋ฉํ๋ฌธ์ : . ^ $ * + ? {} [] \ | ()
2. ์ ๊ท์ : ^ ๊ณผ $
1) ^Class Class ๋ก ์์ํ๋ ๋ชจ๋ ๋ฌธ์์ด์ ๋งค์นญ
2) branch$ branch๋ก ๋๋๋ ๋ฌธ์์ด์ ๋งค์นญ
3) ^Class branch$ Class branch์ ์ ํํ๊ฒ ์ผ์นํ๋ ๋ฌธ์์ด์ ๋งค์นญ
4) name name์ด ๋ค์ด์๋ ๋ชจ๋ ๋ฌธ์์ด์ ๋งค์นญ
3) ^์ $ ์ฌ์ด์ ๋ฌธ์์ด๊ณผ ์ ํํ๊ฒ ์ผ์นํ๋ ๋ฌธ์์ด์ ๋งค์นญ : ๊ณต๋ฐฑ๋ ํ์ฉํ์ง ์์.
3. ์ ๊ท์ Quantifiers(์๋์) : * , + , ? , {}
1) abc* ab ์ 0๊ฐ ์ด์์ c ๋ฅผ ํฌํจํ ๋ฌธ์์ด๊ณผ ๋งค์นญ
2) abc+ ab ์ 1๊ฐ ์ด์์ c ๋ฅผ ํฌํจํ ๋ฌธ์์ด๊ณผ ๋งค์นญ
3) abc? ab ์ 0๊ฐ ๋๋ 1๊ฐ์ c๋ฅผ ํฌํจํ ๋ฌธ์์ด๊ณผ ๋งค์นญ
4) abc{n} ab ์ n๊ฐ์ c๋ฅผ ํฌํจํ ๋ฌธ์์ด๊ณผ ๋งค์นญ
5) abc{n,} ab ์ n๊ฐ ์ด์์ c๋ฅผ ํฌํจํ ๋ฌธ์์ด๊ณผ ๋งค์นญ
6) abc{2,5} ab ์ 2๊ฐ ์ด์ 5๊ฐ ์ดํ์ c๋ฅผ ํฌํจํ ๋ฌธ์์ด๊ณผ ๋งค์นญ
7) a(bc)* a ์ 0๊ฐ ์ด์์ bc๋ฅผ ํฌํจํ ๋ฌธ์์ด๊ณผ ๋งค์นญ
8) a(bc){2,5} a์ 2๊ฐ ์ด์ 5๊ฐ ์ดํ์ bc๋ฅผ ํฌํจํ ๋ฌธ์์ด๊ณผ ๋งค์นญ
1) *์ 0๊ฐ ์ด์์ด๋ผ์ c๊ฐ ์๋ ab๋ ๋งค์นญ๋จ
2) +๋ 1๊ฐ ์ด์์ด๋ผ์ c๊ฐ ์๋ ab๋ ๋งค์นญ ์๋จ
3) ?๋ 0๊ฐ ๋๋ 1๊ฐ์ c ์ด๊ธฐ ๋๋ฌธ์ abc์ ab๋ ๋งค์นญ, abcc๋ ๋งค์นญ ์๋จ
4) c{2} ๋ ๋ฑ 2๊ฐ์ c๋ฅผ ํฌํจํ ๋ฌธ์์ด์ ๋งค์นญ
c{3}์ผ๋ก ํ๋ฉด c๊ฐ 3๊ฐ์ธ ๋ฌธ์์ด์ด ์๊ธฐ ๋๋ฌธ์ ๋งค์นญ๋์ง ์์
7) a ์ 0๊ฐ ์ด์์ bc ์ด๋ฏ๋ก
a๊ฐ ์๋ ๊ทธ๋ฅ bc๋ ๋งค์นญ๋์ง ์์
4. ์ ๊ท์ OR opreeator(์ฐ์ฐ์) : | , []
1) a(b|c) a ๊ทธ๋ฆฌ๊ณ b ๋๋ c ๋ฅผ ํฌํจํ ๋ฌธ์์ด์ ๋งค์นญ
2) a[bc] a(b|c) ์ ๋์ผ
5. ์ ๊ท์ Character classes : \d , \w, \s , .
1) \d ์ซ์ ํ๋์ ๋งค์นญ(decimal)
2) \w ๋ฌธ์(์ซ์, ์๋ฌธ, ์ธ๋๋ฐ) ํ๋์ ๋งค์นญ
3) \s ๊ณต๋ฐฑ๋ฌธ์(ํญ, ์ค๋ฐ๊ฟ, ์คํ์ด์ค) ํ๋์ ๋งค์นญ
4) . ๋ชจ๋ ๋ฌธ์ ํ๋์ ๋งค์นญ
\w ์ \s ์ . ์ ๋งค์นญ์ ๋น๊ต
5-1. ์ ๊ท์ : \D , \W, \S
์์ ์๋ฌธ์์ ๋ฐ๋์ ์๋ฏธ๋ก ๋งค์นญ
\D ์ซ์๊ฐ ์๋ ๋ฌธ์์ด ํ๋์ ๋งค์นญ
\W ๋ฌธ์๊ฐ ์๋ ๊ณต๋ฐฑ ํ๋์ ๋งค์นญ
\S ๊ณต๋ฐฑ์ด ์๋ ์ซ์์ ๋ฌธ์ ํ๋์ ๋งค์นญ
5-1. ์ ๊ท์ : ํน์๋ฌธ์, etc
ํน์๋ฌธ์๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ค๋ฉด, ์ญ์ฌ๋์( \ )๋ฅผ ์์ ๋ถ์ฌ ์ฌ์ฉ.
1) \^\d ํน์๋ฌธ์ ^ ์ ์ซ์ ํ๋๋ฅผ ๋งค์นญ
2) \t ํญ๋ฌธ์
3) \n ์ค๋ฐ๊ฟ๋ฌธ์
4) \r ์บ๋ฆฌ์ง๋ฆฌํด๋ฌธ์
* \r (์บ๋ฆฌ์ง ๋ฆฌํด, carriage return)
: ์ปค์๋ฅผ ํด๋น ์ค์ ๋งจ ์์ผ๋ก ์ฎ๊ฒจ๋์
6. ์ ๊ท์ Grouping : ()
1) a(bc) () ์๊ดํธ๋ ์บก์ณ ๊ทธ๋ฃน์ ์์ฑ
2) a(?:bc)* ?: ๋ ์บก์ณ ๊ทธ๋ฃน ์์ฑ์ ๋ฌด์
3) a(?<foo>bc) ?<foo> ๋ ์บก์ณ ๊ทธ๋ฃน์ ์ด๋ฆ์ ์ง์
- ์ฌ๋ฌ ๊ทธ๋ฃน์ผ๋ก ์บก์ณ๋ ๊ฒฐ๊ณผ๋ ๋ฐฐ์ด๋ก ๋ฐํ๋๋ฏ๋ก index๋ก ์บก์ณ๋ ๋ด์ฉ์ ์ฌ์ฉํ ์ ์๋ค.
- ๋ฐ๋ผ์ ๋ฌธ์์ด๋ก๋ถํฐ ์ ๋ณด๋ฅผ ์ถ์ถํ ๋ ์ ์ฉํ๋ค.
- ๊ทธ๋ฃน์ ์ด๋ฆ์ ์ง์ ํ ๊ฒฝ์ฐ ๊ฐ์ key-value ํํ๋ฅผ ๊ฐ์ง dictionary ์ฒ๋ผ ์ ๊ทผํ ์ ์๋ค.
7. ์ ๊ท์ : []
1) [abc] a ๋๋ b ๋๋ c๋ฅผ ํฌํจํ๋ ๋ฌธ์์ด๊ณผ ๋งค์นญ
2) [a-c] = [abc] = a|b|c
3) [0-9]% 0์ด์ 9์ดํ ์ซ์ ๊ทธ๋ฆฌ๊ณ % ๋ฌธ์๋ฅผ ํฌํจํ ๋ฌธ์์ด๊ณผ ๋งค์นญ
4) [^a-zA-Z] ์๋ฌธ์ด ์๋ ๋ฌธ์์ ๋งค์นญ. [] ์์ ^๋ NOT์ ์๋ฏธ๋ฅผ ๋ํ๋ธ๋ค.
5) [a-fA-F0-9]
8. ์ ๊ท์ : ?
์๋์ ( * + {} )์ ์ต๋ํ ๋ง์ด ๋งค์นญ์ํค๋ ค๋ ํน์ง์ด ์๋ค.
์๋์ ๋ค์ ? ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅํ ์ ๊ฒ ๋งค์นญ์ํค๋ ํน์ง์ ๊ฐ๋๋ค.
< ์ > ์ฌ์ด์ . (๋ชจ๋ ๋ฌธ์) ํ๋ ์ด์์ ๋ฌธ์๋ฅผ ๋งค์นญ
< ์ > ์ฌ์ด์ .(๋ชจ๋ ๋ฌธ์) ํ๋ ์ด์, ๊ฐ๋ฅํ ์ ๊ฒ ๋งค์นญ
ํ์ง๋ง,
. ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์๊ฒฉํ ์ ๊ท์์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ ๋ฐฉ๋ฒ.
< [^<>] + >
< [^<>]+ > : < ์ > ์ฌ์ด์
< [^<>] + > : <์> ๊ฐ ์๋ 1๊ฐ ์ด์์ ๋ฌธ์
9. ์ ๊ท์ Boundaries : \b ์ \B
1) \b ๋์ผํ ๋ฌธ์๋ฅผ ๋งค์นญ
2) \B ํจํด์ด ๋จ์ด๋ก ์์ ํ ๋๋ฌ์ธ์ธ ๊ฒฝ์ฐ ๋งค์นญ.
anchor๋ฌธ์ (^ , $)์ ์ ์ฌํ๋ฉฐ ํ์ชฝ์ ๋ฌธ์, ๋ค๋ฅธ์ชฝ์ ๋ฌธ์๊ฐ ์๋ ๋จ์ด์ ๋งค์นญ.
\Babc\B ์ ๊ฒฐ๊ณผ ๋์ผ.
10. ์ ๊ท์ : (?=) ์ (?<=)
1) d(?=r) r์ด ๋ฐ๋ก ๋ค์ ์๋ d๋ฅผ ๋งค์นญ. (r์ ํฌํจ๋์ง ์์)
2) (?<=r)d r์ด ๋ฐ๋ก ์์ ์๋ d๋ฅผ ๋งค์นญ. (r์ ํฌํจ๋์ง ์์)
3) d(?!r) r์ด ๋ฐ๋ก ๋ค์ ์๋ d๋ฅผ ๋งค์นญ. (r์ ํฌํจ๋์ง ์์)
4) (?<!r)d r์ด ๋ฐ๋ก ์์ ์๋ d๋ฅผ ๋งค์นญ. (r์ ํฌํจ๋์ง ์์)
์ฐธ๊ณ : [์ ๊ท์] ํต์ฌ๋ง ๋ชจ์๋์ Cheat Sheet ๋ธ๋ก๊ทธ
[์ ๊ท์] ํต์ฌ๋ง ๋ชจ์๋์ Cheat Sheet
์์ ๋ฅผ ํตํ์ฌ ์ ๊ท์์ ํต์ฌ์ ์ธ ๋ด์ฉ๋ง ๊น์ด์๊ฒ ์์๋ด ๋๋ค
chrisjune-13837.medium.com
์ค์ต ์ฌ์ดํธ : regex101
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก์ ํธ | ์ค๊ณ ๋จ๊ณ์์ ํ์ฅ์ฑ์ ๋ํ ๊ณ ๋ฏผ (0) | 2025.02.12 |
---|---|
MSA | ์ํท ๋ธ๋ ์ด์ปค (feat. Resilience4j) (3) | 2025.02.11 |
TIL : ๋ฌธ์์ด ์ฌ๋ผ์ด์ฑ ์ธ๋ฑ์ค ์๋ฌ, ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ (0) | 2023.04.29 |
chrome debugging mode (0) | 2022.11.27 |
์ ๊ท์ - Oracle, JAVA (0) | 2022.11.11 |