์ด๋ณด์๋ฅผ ์ํ ์ ๊ท์: ์ ๊ท์ ์์ฑ ๋ฐฉ๋ฒ
์ด๋ณด์๋ฅผ ์ํ ์ ๊ท์
์ ๊ท์(regex)์ ํ ์คํธ๋ฅผ ์ค๋ช ํ๋ ํจํด์ ๋๋ค. ์ ๊ท์์ ์ฌ์ฉํ๋ฉด ๋ฌธ์์ด ๊ฒ์, ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ, ๋ฐ์ดํฐ ์ถ์ถ ๋ฐ ๋ณต์กํ ์ฐพ๊ธฐ-๋ฐ๊พธ๊ธฐ ์์ ์ ํ๋์ ๊ฐ๊ฒฐํ ํํ์์ผ๋ก ์ํํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ์ฌํญ์ ์ดํดํ๋ฉด ์ ๊ท์์ ํ๋ก๊ทธ๋๋ฐ ๋๊ตฌ ์์์์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋๊ตฌ ์ค ํ๋๊ฐ ๋ฉ๋๋ค.
์ ๊ท์์ด๋ ๋ฌด์์ธ๊ฐ์?
์ ๊ท์์ ๊ฒ์ ํจํด์ ์ ์ํ๋ ๋ฌธ์ ์ํ์ค์
๋๋ค. \d{3}-\d{2}-\d{4} ํจํด์ ๋ฏธ๊ตญ ์ฌํ ๋ณด์ฅ ๋ฒํธ(์ธ ์๋ฆฌ ์ซ์, ํ์ดํ, ๋ ์๋ฆฌ ์ซ์, ํ์ดํ, ๋ค ์๋ฆฌ ์ซ์)์ ์ผ์นํฉ๋๋ค.
์ ๊ท์ ์์ง์ JavaScript, Python, Java, Ruby, Go ๋ฑ ๊ฑฐ์ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ด์ฅ๋์ด ์์ต๋๋ค.
๋ฆฌํฐ๋ด ๋ฌธ์
๋๋ถ๋ถ์ ๋ฌธ์๋ ์๊ธฐ ์์ ๊ณผ ์ผ์นํฉ๋๋ค. cat ํจํด์ ๋ฆฌํฐ๋ด ๋ฌธ์์ด "cat"์ด ๋ํ๋๋ ๋ชจ๋ ์์น์์ ์ผ์นํฉ๋๋ค.
Pattern: cat
Matches: "The cat sat on the mat." ์์ "cat"
Matches: "catalog" ์์ "cat"
๋ฆฌํฐ๋ด ๋งค์นญ์ ๊ฐ๋จํ์ง๋ง ํ๊ณ๊ฐ ์์ต๋๋ค. ์ง์ ํ ํ์ ๋ฉํ ๋ฌธ์์์ ๋์ต๋๋ค.
๋ฉํ ๋ฌธ์
๋ค์ ๋ฌธ์๋ ํน๋ณํ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ฉฐ ๋ฆฌํฐ๋ด๋ก ์ผ์น์ํค๋ ค๋ฉด \๋ก ์ด์ค์ผ์ดํํด์ผ ํฉ๋๋ค:
. ^ $ * + ? { } [ ] \ | ( )
๋ฌธ์ ํด๋์ค
๋ฌธ์ ํด๋์ค๋ ์งํฉ์์ ํ๋์ ๋ฌธ์๋ฅผ ์ผ์น์ํต๋๋ค.
๋๊ดํธ ํ๊ธฐ๋ฒ
| ํจํด | ์ผ์น ํญ๋ชฉ |
|---------|---------|
| [aeiou] | ๋ชจ๋ ๋ชจ์ |
| [0-9] | ๋ชจ๋ ์ซ์ |
| [a-zA-Z] | ๋ชจ๋ ๋ฌธ์ |
| [^0-9] | ์ซ์๊ฐ ์๋ ๋ชจ๋ ๋ฌธ์ |
๋ฏธ๋ฆฌ ์ ์๋ ํด๋์ค
| ์ถ์ฝํ | ์ค๋ช
|
|-----------|-------------|
| \d | ๋ชจ๋ ์ซ์ ([0-9]์ ๋์ผ) |
| \w | ๋ฌธ์, ์ซ์ ๋๋ ๋ฐ์ค |
| \s | ๊ณต๋ฐฑ, ํญ, ์ค๋ฐ๊ฟ |
| \D | ์ซ์๊ฐ ์๋ ๋ชจ๋ ๋ฌธ์ |
| \W | ๋จ์ด ๋ฌธ์๊ฐ ์๋ ๋ชจ๋ ๋ฌธ์ |
| \S | ๊ณต๋ฐฑ์ด ์๋ ๋ชจ๋ ๋ฌธ์ |
| . | ์ค๋ฐ๊ฟ์ ์ ์ธํ ๋ชจ๋ ๋ฌธ์ |
์๋์
์๋์๋ ์์ ์์๊ฐ ๋ช ๋ฒ ๋ํ๋์ผ ํ๋์ง ์ ์ดํฉ๋๋ค.
| ์๋์ | ์๋ฏธ | ์์ | ์ผ์น ํญ๋ชฉ |
|------------|---------|---------|---------|
| * | 0ํ ์ด์ | a* | "", "a", "aa" |
| + | 1ํ ์ด์ | a+ | "a", "aa", "aaa" |
| ? | 0ํ ๋๋ 1ํ | colou?r | "color", "colour" |
| {3} | ์ ํํ Nํ | \d{3} | "123" |
| {2,4} | Nํ์์ Mํ ์ฌ์ด | \d{2,4} | "12", "123", "1234" |
์์
\d+ โ "Answer is 42" ์์ "42"
https?:// โ "http://" ๋ฐ "https://"
์ต์ปค
์ต์ปค๋ ๋ฌธ์๊ฐ ์๋ ์์น๋ฅผ ์ผ์น์ํต๋๋ค.
| ์ต์ปค | ์๋ฏธ |
|--------|---------|
| ^ | ๋ฌธ์์ด์ ์์ |
| $ | ๋ฌธ์์ด์ ๋ |
| \b | ๋จ์ด ๊ฒฝ๊ณ |
| \B | ๋น๋จ์ด ๊ฒฝ๊ณ |
^hello โ ์์ ๋ถ๋ถ์ ์๋ "hello"๋ง ์ผ์น
end$ โ ๋ ๋ถ๋ถ์ ์๋ "end"๋ง ์ผ์น
\bword\b โ "sword" ๋ด๋ถ๊ฐ ์๋ ์์ ํ ๋จ์ด "word"์ ์ผ์น
๊ทธ๋ฃน๊ณผ ๋์ฒด
์บก์ฒ ๊ทธ๋ฃน ( )์ ์ผ์น๋ ๋ถ๋ถ์ ์ถ์ถํฉ๋๋ค:
(\d{3})-(\d{4}) โ "555-1234", ๊ทธ๋ฃน 1์ "555", ๊ทธ๋ฃน 2์ "1234" ์บก์ฒ
๋น์บก์ฒ ๊ทธ๋ฃน (?: )์ ์ถ์ถ ์์ด ๊ทธ๋ฃนํํฉ๋๋ค:
(?:https?|ftp):// โ "http://", "https://", "ftp://"
๋์ฒด |๋ OR ์ญํ ์ ํฉ๋๋ค:
cat|dog|bird โ "cat", "dog" ๋๋ "bird"์ ์ผ์น
์ค์ฉ์ ์ธ ์ ๊ท์ ์์
| ์ฌ์ฉ ์ฌ๋ก | ํจํด |
|----------|---------|
| ๋ฏธ๊ตญ ์ ํ๋ฒํธ | \d{3}-\d{3}-\d{4} |
| ์ด๋ฉ์ผ (๊ฐ๋จ) | \S+@\S+\.\S+ |
| IP ์ฃผ์ | \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} |
| ํด์ํ๊ทธ | #[a-zA-Z]\w* |
| ์๊ฐ (HH:MM) | [01]\d|2[0-3]:[0-5]\d |
์ ๊ท์ ํจํด ํ ์คํธ ๋ฐฉ๋ฒ
ํญ์ ๋ํํ์ผ๋ก ํจํด์ ํ ์คํธํ์ธ์:
- ์ ๊ท์ ํจํด์ ์ ๋ ฅํฉ๋๋ค.
- ํ ์คํธ ๋ฌธ์์ด์ ์ ๋ ฅํฉ๋๋ค.
- ์ด๋ค ๋ถ๋ถ์ด ์ค์๊ฐ์ผ๋ก ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.
- ์กฐ์ ํ๊ณ ๋ฐ๋ณตํฉ๋๋ค.
์ ๊ท์ ํ ์คํฐ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํจํด์ ์คํํด ๋ณด์ธ์. ์ผ์น ํญ๋ชฉ์ ๊ฐ์กฐ ํ์ํ๊ณ , ์บก์ฒ ๊ทธ๋ฃน์ ๋ณด์ฌ์ฃผ๋ฉฐ, ํํ์์ ๊ฐ ๋ถ๋ถ์ด ์ ํํ ๋ฌด์์ ํ๋์ง ์ดํดํ ์ ์๋๋ก ๋์์ค๋๋ค.