์ ๊ท์ ํํ
์ ์:
์ ๊ท ํํ์(regular expression, regex ๋๋ regexp)์ ๋ฌธ์์ด์์ ํน์ ํจํด์ ์ฐพ๊ฑฐ๋ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ผ์ข ์ ํจํด ๋งค์นญ ๊ธฐ์ ์ด๋ค.
1. ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์
์ ๊ท ํํ์์ ๋ฌธ์์ ๋ฉํ ๋ฌธ์๋ก ๊ตฌ์ฑ๋๋ค. ๋ฉํ ๋ฌธ์๋ ํน์ ๊ท์น์ ๋ฐ๋ผ ๋ฌธ์์ด์ ํจํดํ ํ์ฌ ํํํ ์ ์๋ ํน๋ณํ ๋ฌธ์์ด๋ค.
๋ฌธ์ ํด๋์ค
- . : ์์์ ํ ๋ฌธ์ (์ค๋ฐ๊ฟ ์ ์ธ)
- [abc] : a, b, c ์ค ํ๋์ ๋ฌธ์์ ๋งค์นญ
- [^abc] : a, b, c ๋ฅผ ์ ์ธํ ๋ฌธ์์ ๋งค์นญ
- [a-z] : ์๋ฌธ์ a์์ z๊น์ง์ ์ํ๋ฒณ ๋ฌธ์์ ๋งค์นญ
- \d : ์ซ์(0-9)์ ๋งค์นญ
- \D : ์ซ์๊ฐ ์๋ ๋ฌธ์์ ๋งค์นญ
- \w : ์ํ๋ฒณ ๋์๋ฌธ์, ์ซ์, ๋ฐ์ค๊ณผ ๋งค์นญ (์ฆ, ๋จ์ด ๋ฌธ์์ ์๋ฏธ)
- \W : ๋จ์ด ๋ฌธ์๊ฐ ์๋ ๋ฌธ์์ ๋งค์นญ
- \s : ๊ณต๋ฐฑ ๋ฌธ์(๋์ด์ฐ๊ธฐ, ํฌ ๋ฑ)์ ๋งค์นญ
- \S : ๊ณต๋ฐฑ ๋ฌธ์๊ฐ ์๋ ๋ฌธ์์ ๋งค์นญ
๊ฒฝ๊ณ ์ง์ ์
- ^ : ๋ฌธ์์ด์ ์์์ ์๋ฏธ
- $ : ๋ฌธ์์ด์ ๋์ ์๋ฏธ
- \b : ๋จ์ด์ ๊ฒฝ๊ณ๋ฅผ ์๋ฏธ (ex. ๊ณต๋ฐฑ์ด๋ ๊ตฌ๋์ ๊ณผ ๋ง๋ฟ์ ๋ถ๋ถ)
- \B : ๋จ์ด ๊ฒฝ๊ณ์ ์๋ ๋ถ๋ถ์ ์๋ฏธ
2. ์๋์
์๋์๋ ํน์ ํจํด์ด ๋ํ๋๋ ํ์๋ฅผ ์ง์ ํ๋ค.
- * : 0ํ ์ด์ ๋ฐ๋ณต (ex a* -> a๊ฐ 0๋ฒ ์ด์ ๋ํ๋๋ ๊ฒฝ์ฐ)
- + : 1ํ ์ด์ ๋ฐ๋ณต (ex a+ -> a๊ฐ 1๋ฒ ์ด์ ๋ํ๋๋ ๊ฒฝ์ฐ)
- ? : 0ํ ๋๋ 1ํ๋ง ๋ํ๋๋ ๊ฒฝ์ฐ (ex a? -> a๊ฐ ์์ ์๋ ์์ ์๋ ์๋ ๊ฒฝ์ฐ)
- {n} : ์ ํํ nํ ๋ฐ๋ณต (ex a{3} -> a๊ฐ ์ ํํ 3๋ฒ ๋ํ๋๋ ๊ฒฝ์ฐ)
- {n, } : nํ ์ด์ ๋ฐ๋ณต (ex -> a{2, } ๋ a๊ฐ 2๋ฒ ์ด์ ๋ํ๋๋ ๊ฒฝ์ฐ)
- {n, m} : nํ ์ด์ mํ ์ดํ ๋ฐ๋ณต (ex -> a{2, 4}๋ a๊ฐ 2๋ฒ์์ 4๋ฒ๊น์ง ๋ํ๋๋ ๊ฒฝ์ฐ)
3. ๊ทธ๋ฃน๊ณผ ์ฐธ์กฐ
๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ์ ๊ท์์ ํน์ ๋ถ๋ถ์ ์บก์ฒํ๊ฑฐ๋ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ ์ ์๋ค.
- (abc) : abc๋ผ๋ ๋ฌธ์์ด์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๋๋ค.
- (?:abc) : ์บก์ฒํ์ง ์๋ ๊ทธ๋ฃจ. abc์ ๋งค์นญ๋์ง๋ง ๋ณ๋๋ก ์บก์ฒ๋์ง ์๋๋ค.
- \1 , \2 ๋ฑ : ์ด์ ์ ์บก์ฒ๋ ๊ทธ๋ฃน์ ์ฐธ์กฐ (ex (a)(b)\1\2๋ abab์ ๋งค์นญ
4. ์ ํ์
- | : ๋๋ (OR) ์ฐ์ฐ์ (ex a|b -> a ๋๋ b ์ค ํ๋์ ๋งค์นญ)
5. ์์ฃผ ์ฌ์ฉํ๋ ํจํด ์์
- ์ด๋ฉ์ผ: /^[\w.-]+@[a-zA-Z\d.-]+\.[a-zA-Z]{2,6}$/
- ์ ํ๋ฒํธ: /^\d{3}-\d{3,4}-\d{4}$/
- ์ฐํธ๋ฒํธ (5์๋ฆฌ ์ซ์): /^\d{5}$/
- URL: /^(https?:\/\/)?(www\.)?[\w.-]+\.[a-zA-Z]{2,6}(\/\S*)?$/
๋๊ธ