πŸ₯¨ 이것저것

μ •κ·œν‘œν˜„μ‹ (Regular Expression) 기초

볡만 2022. 5. 20. 19:47

μ •κ·œν‘œν˜„μ‹, λ˜λŠ” μ •κ·œμ‹μ€ 'νŠΉμ •ν•œ κ·œμΉ™μ„ 가진 λ¬Έμžμ—΄μ˜ 집합을 ν‘œν˜„ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” ν˜•μ‹ μ–Έμ–΄' 이닀. (μœ„ν‚€λ°±κ³Ό)

κΈ΄ λ¬Έμžμ—΄μ—μ„œ νŠΉμ • νŒ¨ν„΄μ„ 가진 뢀뢄을 μ°Ύμ•„λ‚΄λŠ” 데에 μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆλ‹€.

 

RegExr

RegExrμ—μ„œ μ •κ·œν‘œν˜„μ‹μ„ ν…ŒμŠ€νŠΈν•΄λ³Ό 수 μžˆλ‹€.

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

 

[Expression] 뢀뢄에 ν‘œν˜„μ‹μ„ μ“°λ©΄, [Text] 뢀뢄에 μž…λ ₯ν•œ λ¬Έμžμ—΄μ—μ„œ ν•΄λ‹Ήλ˜λŠ” 뢀뢄을 ν‘œμ‹œν•΄μ€€λ‹€.

μ•„λž˜ [Tools] λΆ€λΆ„μ—μ„œ ν‘œν˜„μ‹μ˜ 각 뢀뢄을 μ„€λͺ…ν•΄μ€€λ‹€.

 

 

ν‘œν˜„μ‹μ— 마우슀λ₯Ό κ°€μ Έκ°€λ©΄ 각 뢀뢄이 μ–΄λ–€ μ˜λ―ΈμΈμ§€ μ„€λͺ…ν•΄μ€€λ‹€.

 

μ •κ·œν‘œν˜„μ‹ 문법

ν•„μš”ν•œ λ¬Έμžμ—΄μ„ μ°ΎκΈ° μœ„ν•΄ λ‹¨μˆœνžˆ μ›ν•˜λŠ” ν‚€μ›Œλ“œλ₯Ό μž…λ ₯ν•  수 μžˆλ‹€.

예λ₯Ό λ“€μ–΄, 'gray'λΌλŠ” λ¬Έμžμ—΄μ„ μ°ΎκΈ° μœ„ν•΄μ„œλŠ” λ‹¨μˆœνžˆ grayλ₯Ό μž…λ ₯ν•˜λ©΄ λœλ‹€.

 

 

ν˜Ήμ€, 'gray' λ˜λŠ” 'grey'λ₯Ό μ°Ύκ³  싢은 경우 | (or) μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

 

 

κ°„λ‹¨ν•œ λ¬Έμžμ—΄μ˜ νƒμƒ‰μ˜ 경우 μ΄λ ‡κ²Œ ν…μŠ€νŠΈλ§Œ μ΄μš©ν•˜λ©΄ λ˜μ§€λ§Œ,

보닀 λ³΅μž‘ν•œ 탐색을 ν•˜κ³  싢은 경우 λ‹€μ–‘ν•œ λ©”νƒ€λ¬Έμžλ₯Ό μ΄μš©ν•΄μ„œ μ •κ·œν‘œν˜„μ‹μ„ λ§Œλ“€ 수 μžˆλ‹€.

 

κ·Έλ£Ή λ¬ΆκΈ°

κ΄„ν˜Έ ()λ₯Ό μ΄μš©ν•΄ μ—°μ‚°μžμ˜ λ²”μœ„λ₯Ό 지정할 수 μžˆλ‹€.

예λ₯Ό λ“€μ–΄ μœ„μ˜ 경우처럼 'gray' λ˜λŠ” 'grey'λ₯Ό μ°Ύκ³  싢은 경우, κ°€μš΄λ°μ˜ 'a'λ‚˜ 'e'μ—λ§Œ | (or) μ—°μ‚°μžλ₯Ό μ μš©ν•΄ λ‹€μŒκ³Ό 같이 ν‘œν˜„ν•  수 μžˆλ‹€.

 

 

반볡 νŒ¨ν„΄

λ‹€μŒ λ©”νƒ€λ¬Έμžλ₯Ό μ΄μš©ν•΄ νŠΉμ • 문자의 λ°˜λ³΅μ„ 지정할 수 μžˆλ‹€.
λ°˜λ³΅μ„ μ§€μ •ν•˜κ³ μžν•˜λŠ” 문자의 뒀에 λ‹€μŒ λ©”νƒ€λ¬Έμžλ₯Ό μž…λ ₯ν•΄μ£Όλ©΄ λœλ‹€.

 

λ©”νƒ€λ¬Έμž κΈ°λŠ₯
? 0번 ν˜Ήμ€ 1번 반볡
* 0번 이상 반볡
+ 1번 이상 반볡
{n} μ •ν™•νžˆ n번 반볡
{m,} m번 이상 반볡
{m,n} m번 이상 n번 μ΄ν•˜ 반볡

 

예λ₯Ό λ“€λ©΄, colou?r 을 μ΄μš©ν•˜λ©΄, 'colo' + 'u'λ₯Ό 0번 ν˜Ήμ€ 1번 반볡 + 'r' μ΄λΌλŠ” μ˜λ―Έμ΄λ―€λ‘œ,
'color'κ³Ό 'colour' λͺ¨λ‘λ₯Ό 찾을 수 μžˆλ‹€.

 

ab*c의 경우, a와 c 사이 bλ₯Ό 0번 이상 λ°˜λ³΅ν•˜λŠ” λ¬Έμžμ—΄μ„ μ°ΎλŠ” μ‹μ΄λ―€λ‘œ,
'ac', 'abc', 'abbc', 'abbbc', ... 등을 μΌμΉ˜μ‹œν‚¨λ‹€.

 

μœ μ‚¬ν•˜κ²Œ, a와 c 사이 bλ₯Ό 무쑰건 1번 이상 ν¬ν•¨ν•˜κ³  μ‹Άλ‹€λ©΄
ab+cλ₯Ό μ΄μš©ν•˜λ©΄ 'abc', 'abbc', abbbc', ... 등을 찾을 수 μžˆλ‹€.

 

μ •ν™•ν•œ 반볡 횟수λ₯Ό μ§€μ •ν•˜κ±°λ‚˜, 반볡 횟수의 λ²”μœ„λ₯Ό μ„€μ •ν•˜κ³  μ‹Άλ‹€λ©΄ {}λ₯Ό μ΄μš©ν•˜λ©΄ λœλ‹€.

 

 

ν•œ λ¬Έμžκ°€ μ•„λ‹ˆλΌ, μ—¬λŸ¬ λ¬Έμžμ— 반볡 연산을 μ μš©ν•΄μ£Όκ³  μ‹Άλ‹€λ©΄, μ•žμ—μ„œ μ„€λͺ…ν•œ κ΄„ν˜Έ ()λ₯Ό μ΄μš©ν•˜λ©΄ λœλ‹€.

 

 

문자 클래슀 [ ]

[ ] μ•ˆμ˜ 문자 쀑 ν•˜λ‚˜μ— ν•΄λ‹Ήν•˜λŠ” 문자λ₯Ό 찾을 수 μžˆλ‹€.
예λ₯Ό λ“€μ–΄, [123]은 1, 2, 3쀑 ν•˜λ‚˜λΌλ„ μΌμΉ˜ν•˜λŠ” λ¬Έμžκ°€ μžˆλŠ”μ§€ νƒμƒ‰ν•œλ‹€.
1|2|3과도 λ™μΌν•œ 의미λ₯Ό κ°–λŠ”λ‹€.

 

 

λͺ¨λ“  숫자, ν˜Ήμ€ λͺ¨λ“  문자λ₯Ό νƒμƒ‰ν•˜κ³ μž ν•  λ•ŒλŠ” λ‹€μŒκ³Ό 같이 μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€.

 

ν‘œν˜„μ‹ 의미
[0-9] λͺ¨λ“  숫자
[a-z] λͺ¨λ“  μ†Œλ¬Έμž
[A-Z] λͺ¨λ“  λŒ€λ¬Έμž

 

 

λͺ¨λ“  μˆ«μžμ™€ λͺ¨λ“  영문자λ₯Ό ν¬ν•¨ν•˜κ²Œ ν•˜λ €λ©΄, μœ„ ν‘œν˜„μ‹μ„ ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ λœλ‹€.

[ ] μ•ˆμ˜ λ¬ΈμžλŠ” | (or)κ³Ό 같은 의미λ₯Ό κ°€μ§€λ―€λ‘œ, [0-9a-z-A-Z]λŠ” 'λͺ¨λ“  μˆ«μžμ™€ 영문자'λ₯Ό μ˜λ―Έν•œλ‹€.

 

 

μ•žμ„œ μ„€λͺ…ν•œ 반볡 연산을 ν•¨κ»˜ μ μš©ν•  μˆ˜λ„ μžˆλ‹€.

예λ₯Ό λ“€μ–΄, λ‹€μŒ ν‘œν˜„μ‹μ€ a, b, c 쀑 ν•˜λ‚˜λ₯Ό ν•œ 번 이상 반볡(+)ν•˜κ³ , κ·Έ λ‹€μŒ 숫자 ν•˜λ‚˜κ°€ ν¬ν•¨λœ λ¬Έμžμ—΄μ„ νƒμƒ‰ν•œλ‹€.

 

 

예제

μœ„μ˜ λ‹€μ–‘ν•œ 문법을 μ΄μš©ν•΄ λ‹€μŒκ³Ό 같은 μ •κ·œν‘œν˜„μ‹μ„ λ§Œλ“€ 수 μžˆλ‹€.

 

1) 010-0000-0000 ν˜•νƒœμ˜ μ „ν™”λ²ˆν˜Έ

 

 

2) μ˜μ–΄ λŒ€λ¬Έμž, μ†Œλ¬Έμž, 숫자둜 κ΅¬μ„±λœ 8자 μ΄μƒμ˜ λΉ„λ°€λ²ˆν˜Έ

 

λ°˜μ‘ν˜•