๐Ÿงฉ
โ† ๊ฐ€์ด๋“œ ๋ชฉ๋ก์œผ๋กœ

์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์ •๊ทœ์‹: ์ •๊ทœ์‹ ์ž‘์„ฑ ๋ฐฉ๋ฒ•

ยท ํƒœ๊ทธ: regex-beginners, regular-expression-guide, regex-tutorial, regex-patterns, learn-regex

์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์ •๊ทœ์‹

์ •๊ทœ์‹(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 |

์ •๊ทœ์‹ ํŒจํ„ด ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•

ํ•ญ์ƒ ๋Œ€ํ™”ํ˜•์œผ๋กœ ํŒจํ„ด์„ ํ…Œ์ŠคํŠธํ•˜์„ธ์š”:

  1. ์ •๊ทœ์‹ ํŒจํ„ด์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  2. ํ…Œ์ŠคํŠธ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. ์–ด๋–ค ๋ถ€๋ถ„์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. ์กฐ์ •ํ•˜๊ณ  ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์ •๊ทœ์‹ ํ…Œ์Šคํ„ฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ„ด์„ ์‹คํ—˜ํ•ด ๋ณด์„ธ์š”. ์ผ์น˜ ํ•ญ๋ชฉ์„ ๊ฐ•์กฐ ํ‘œ์‹œํ•˜๊ณ , ์บก์ฒ˜ ๊ทธ๋ฃน์„ ๋ณด์—ฌ์ฃผ๋ฉฐ, ํ‘œํ˜„์‹์˜ ๊ฐ ๋ถ€๋ถ„์ด ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์ •๊ทœ์‹: ์ •๊ทœ์‹ ์ž‘์„ฑ ๋ฐฉ๋ฒ• - CoolTool