📚 책 추천 | 얞제까지 정규식 몚륎고 ì“ž 걎데..? (손에 잡히는 정규 표현식, ë²€ 포터)

마법사 슬Ʞ·2024년 3월 20음
1

책 추천

목록 볎Ʞ
1/1
post-thumbnail

정규식 검색하멎 ë‹€ 나였는 것 아니었나요? 🀔

음하닀 볎멎 필수는 아니지만, 읎 정도로 유용한 것읎 또 있을까요?
귞것읎 바로 정규 표현식입니닀.
아마 볎통 처음 접하게 되는 것은 회원가입 페읎지륌 만듀 때가 아닐까요?
저도 췚쀀 시절에 회원가입 페읎지륌 만듀며 정규 표현식의 펞늬핚을 몞소 느ꌈ습니닀.
하지만 막상 음을 시작하니 자죌 사용되는 것읎 아니띌서
공부핎알지~ 하멎서도 우선순위에서 믞룚고 있었습니닀.

귞러던 얎느 날, 상사분을 통핎 한 번 제대로 알아두멎
평생 활용할 수 있닀는 말에 정규 표현식 책을 꺌낎 듀었습니닀.

싀습은 반드시❗

정규 표현식읎띌는 앜속곌 같습니닀.
우늬가 읎 Ʞ혞듀을 읎렇게 핎석할 것읎닀, 띌는 게 정규 표현식입니닀.
귞래서 각 챕터 별로 정규 표현식을 싀습하는 것읎 앜속을 손에 익히는데 큰 도움읎 됩니닀.

저는 개읞적윌로 Regex101 사읎튞륌 추천합니닀. 읎 사읎튞륌 통핎 정규 표현식을 싀습하고 테슀튞할 수 있었습니닀.


귞래서 묎슚 책을 추천하는데?

였늘 제가 소개드늎 책은 '손에 잡히는 정규 표현식'입니닀.
읎 책은 당 한 권윌로도 정규 표현식의 개념을 읎핎하고, ê·ž 활용법을 쉜게 익힐 수 있도록 구성되얎 있습니닀.
특히 쎈볎자분듀읎나, 쀑간쀑간 찞고하고 싶은 분듀께 추천드늜니닀.

제가 아래에 낎용의 핵심적읞 낎용곌 공부한 것듀을 핚께 정늬핎두겠지만,
더 깊은 읎핎륌 위핎서는 직접 책을 읜윌며 싀습하는 것읎 좋습니닀.

ꌭ 읜었윌멎 하는 챕터

  • 1장부터 10장까지

읜지 않아도 되는 챕터

  • 부록 A부터 C

여Ʞ까지만 알아도 도움되는 정규 표현식

정규표현식윌로 색상 번혞 음치여부 ì°Ÿêž°

body {
color : "#335533"
, background-color : "#ffffff"
}
#[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]

읎 윔드는 슀타음 시튞에서 색상 번혞륌 찟는 정규표현식을 삎펎뎅니닀. 색상 번혞는 "#"윌로 시작하고 6자늬의 16진수로 표현됩니닀.

제왞하고 ì°Ÿêž°

sam.xls
na1.xls
sa1.xls
na2.xls
cal1.xls
usa3.xls
[ns]a[^0-9]\.xls

=> sam.xls만 나옎
위 예제에서는 sa 뒀에 숫자가 였는 .xls 확장자륌 제왞한 것을 찟는 정규표현식을 볎여쀍니닀.

메타묞자 사용하Ʞ

myArray[1]
myArray[2]
myArray[3]
myArray[4]
myArray\[[0-9]\]

메타 묞자륌 읎슀쌀읎프하여 사용하는 예제입니닀. 대ꎄ혞 안의 숫자에 음치하는 팚턎을 찟습니닀.

쀄바꿈 묞자

\r : 캐늬지 늬턎
\n : 엔터
\t : 탭

읎 예제에서는 닀양한 쀄바꿈 묞자에 대핮 섀명하고 있습니닀. 윈도우와 유닉슀/늬눅슀 시슀템에서의 쀄바꿈 묞자의 찚읎도 얞꞉되얎 있습니닀.

묞자 큎래슀

myArray[1]
myArray[2]
myArray[3]
myArray[4]
myArray\[\d\]

\d, \w, \s 등의 묞자 큎래슀에 대핮 섀명하는 예제입니닀. 각 큎래슀가 ì–Žë–€ 묞자륌 음치시킀는지륌 볎여쀍니닀.

포직슀 묞자 큎래슀

[:alnum:]        몚든 영숫자([a-zA-Z0-9]와 같닀)
[:alpha:]        몚든 영묞자([a-zA-Z]와 같닀)
[:blank:]        빈칞(space)읎나 탭 묞자([\t]와 같닀)
[:cntrl:]        아슀킀 제얎묞자(아슀킀 0번부터 31, 127번)
[:digit:]        몚든 한 자늬 숫자([0-9])와 같닀
[:print:]        출력 가능한 몚든 묞자
[:graph:]        [:print:]와 동음하나 빈칞(space)는 제왞
[:lower:]        몚든 소묞자([a-z]와 같닀)
[:upper:]        몚든 대묞자([A-Z]와 같닀)
[:punct:]        [:alnum:]읎나 [:cntrl:]가 포핚되지 않은 몚든 묞자
[:space:]        빈칞을 포핚한 몚든 공백 묞자([\f\n\r\t\v]와 같닀)
[:xdigit:]       몚든 16진수 숫자([a-fA-F0-9]와 같닀)

포직슀 묞자 큎래슀의 예제입니닀. 각 큎래슀가 ì–Žë–€ 묞자륌 음치시킀는지에 대한 섀명읎 포핚되얎 있습니닀.

묞자 하나 읎상 ì°Ÿêž°

읎메음 죌소륌 찟는 정규표현식 예제입니닀. [\w.]+는 읎메음 죌소의 사용자 읎늄에 핎당하는 부분을 나타낎며, @ 닀음에는 도메읞 읎늄읎 옵니닀. 도메읞 읎늄은 [\w.]+.\w+와 같읎 표현됩니닀.

[\w.]+@[\w.]+\.\w+

읎 정규표현식은 닀음곌 같은 읎메음 죌소륌 찟을 수 있습니닀:

ben@forta.com
test.support@forta.com
span@forta.urgent.com

집합 안에서는 마칚표륌 읎슀쌀읎프 하지 않아도 되지만, 읎슀쌀읎프 핮도 묞제가 발생하지 않습니닀.

묞자가 없는 겜우나 하나 읎상 연속하는 묞자 ì°Ÿêž°
묞자가 없거나 하나 읎상 연속하는 묞자륌 찟는 예제입니닀. \w+[\w.]*@[\w.]+.\w+는 읎메음 죌소륌 찟는 정규표현식윌로, 읎메음 사용자 읎늄곌 도메읞 읎늄 사읎에 묞자가 없거나 하나 읎상의 묞자가 연속될 수 있습니닀.

\w+[\w.]*@[\w.]+\.\w+

읎 정규표현식은 닀음곌 같은 읎메음 죌소륌 찟을 수 있습니닀

ben@forta.com
test.support@forta.com
.span@forta.urgent.com

묞자가 없거나 하나만 있는 묞자 ì°Ÿêž°

URL을 찟는 정규표현식 예제입니닀. https?:\/\/[\w.\/]+는 http:// 또는 https://로 시작하는 URL을 찟습니닀. URL에는 사용자 읎늄, 도메읞 읎늄, 겜로가 포핚될 수 있습니닀.

https?:\/\/[\w.\/]+

읎 정규표현식은 닀음곌 같은 URL을 찟을 수 있습니닀:

http://www.forta.com/
https://www.forta.com/

구간 지정하Ʞ: 정확한 구간 ì°Ÿêž°

#[[:xdigit:]]{6}

읎 정규표현식은 6자늬의 16진수 숫자륌 찟습니닀. 죌로 색상 윔드와 같은 것을 찟을 때 사용됩니닀.

구간 지정하Ʞ: 범위 구간 ì°Ÿêž°

\d{1,2}[\/-]\d{1,2}[\/-]\d{2,4}

읎 정규표현식은 날짜륌 찟는 데 사용됩니닀. 날짜 형식은 숫자로 된 월/음/년 또는 월-음-년입니닀.

예:

4/8/03
10-6-2004
2/2/2
01-01-01

구간 지정하Ʞ: 최소 구간 ì°Ÿêž°

\d+\: \$[\d]{3,}\.\d{2}

읎 정규표현식은 특정 팚턎을 가진 텍슀튞륌 찟습니닀. 숫자로 시작하고, 윜론(:)읎 나였고, 공백, 달러 Ʞ혞($), 귞늬고 최소 ì„ž 자늬의 숫자, 소숫점(.), 귞늬고 두 자늬의 숫자로 된 팚턎입니닀.

예:

1001: $496.00
1002: $1290.69
1003: $26.43
1004: $613.42
1005: $7.61
1006: $414.90
1007: $25.00

곌하게 음치하는 상황 방지하Ʞ: 탐욕적 수량자 vs 게윌륞 수량자

정규표현식에서 곌하게 음치하는 상황을 방지하는 방법에는 탐욕적 수량자와 게윌륞 수량자가 있습니닀.

  • 탐욕적 수량자: , +, {n,} 등을 사용할 때 최대한 많은 묞자륌 음치시킀렀고 합니닀.
    게윌륞 수량자: 탐욕적읞 수량자의 반대로,
    ?, +?, {n,}? 등을 사용할 때 최소한의 묞자만을 음치시킀렀고 합니닀.
    읎륌 섀명하는 예시로 <[Bb]>.*?<\/[Bb]>륌 ë“€ 수 있습니닀. 읎 정규표현식은 < B > 또는 < b >로 시작하는 태귞륌 찟윌며, 태귞 안에 있는 낎용을 최소한의 묞자만을 포핚하여 찟습니닀.

예시:

This offer is not available to customers
living in <B>AK</B> and <B>HI</B>
위의 예시에서는 <B>AK</B>와 <B>HI</B>륌 각각 찟아냅니닀.

ë‹šì–Ž 겜계 지정하Ʞ

ë‹šì–Ž 겜계는 특정 ë‹šì–Žê°€ 묞장 낎에서 딱 맞게 음치하는 부분을 찟을 때 사용됩니닀. \bcat\b는 "cat"읎띌는 닚얎만을 ì°Ÿì•„ë‚Žë©°, 묞장 낎에서 "cat"읎 딱 맞게 음치하는 부분을 찟습니닀.

예시:

The cat scattered his food all over the room.

위의 예시에서는 "cat"을 찟아냅니닀.

또한, \bcap와 cap\b는 각각 "cap"읎띌는 ë‹šì–Žê°€ 묞장에서 딱 맞게 음치하는 부분을 찟습니닀.

묞자엎 겜계 지정하Ʞ

묞자엎 겜계는 죌얎진 묞자엎의 시작 또는 끝을 찟을 때 사용됩니닀. ^\s<\?xml.\?>는 XML 선얞부륌 찟는 정규표현식입니닀. 읎 정규표현식은 묞자엎의 시작(^)부터 공백 묞자(\s*)가 나올 수 있고, ê·ž 뒀에 XML ì„ ì–ž 묞자엎읎 였는 팚턎을 찟습니닀.

예시:

<?xml version="1.0" encoding="UTF-8" ?>

위의 예시에서는 XML ì„ ì–ž 묞자엎을 찟아냅니닀.

또한,

<\/[Hh][Tt][Mm][Ll]>\s*$

는 HTML 태귞의 닫는 태귞가 있는지륌 찟는 정규표현식입니닀. 읎 정규표현식은 HTML 닫는 태귞(

</html>

)와 묞자엎의 끝($)을 찟습니닀.

예시:

<html>abcd</html>
위의 예시에서는 </html>을 찟아냅니닀.

닀쀑행 몚드 활용하Ʞ

닀쀑행 몚드는 정규표현식읎 여러 쀄에 걞쳐 적용될 때 사용됩니닀. 볎통은 m 플래귞륌 사용하여 활성화됩니닀. 읎 몚드륌 사용하멎 ^는 묞자엎의 시작곌 각 쀄의 시작을 나타낎고, $는 묞자엎의 끝곌 각 쀄의 끝을 나타냅니닀.

예륌 듀얎, (m?)\/\/.*은 닀쀑행 몚드륌 사용하여 죌석을 찟는 정규표현식입니닀. 읎 정규표현식은 //로 시작하는 죌석을 찟아냅니닀. 각 쀄의 시작에 있는 //부터 ê·ž 쀄의 끝까지의 낎용을 음치시킵니닀.

Function doSpellCheck(form, field) {
    // Make sure not empty
    if(field.value == '') {
        return false;
    }
    // Init
    var windowName = 'spellWindow';
    var spellCheckURL = 'spell.cfm?formname=comment&fieldname=' + field.name;
    //Done
    return false;
}

위의 윔드에서는 //로 시작하는 죌석을 ì°Ÿì•„ë‚Žê³ , ê·ž 뒀에 였는 낎용을 음치시킵니닀. 읎륌 통핎 죌석 부분을 추출할 수 있습니닀.

하위 표현식윌로 묶Ʞ

하위 표현식은 ꎄ혞로 묶읞 부분을 하나의 귞룹윌로 만드는데 사용됩니닀. 읎륌 활용하멎 귞룹윌로 묶읞 부분에 대핮 닀양한 작업을 수행할 수 있습니닀.

예륌 듀얎,

(&nbsp;){2,}

는  륌 2번 읎상 연속윌로 나타나는 부분을 찟는 정규표현식입니닀.

Hello, my name is Ben&nbsp;Forta, and I am
the author of books on SQL, SoldFusion, WAP,
Windows&nbsp;&nbsp;2000, and other subjects.

위의 예시에서는

&nbsp;

가 2번 읎상 연속윌로 나타나는 부분을 찟아냅니닀.

쀑첩된 하위 표현식

정규표현식에서는 쀑첩된 하위 표현식을 사용하여 더 복잡한 팚턎을 만듀 수 있습니닀. 쀑첩된 하위 표현식은 ꎄ혞로 묶읞 부분 안에 또 닀륞 ꎄ혞로 묶읞 하위 표현식을 포핚하는 것을 말합니닀.

예륌 듀얎, IP 죌소륌 나타낮는 팚턎을 ì°Ÿêž° 위핎 쀑첩된 하위 표현식을 사용할 수 있습니닀. 아래의 예제는 IP 죌소륌 찟는 정규표현식입니닀.

(((1\d{2})|(2[0-4]\d)|(25[0-5])|(\d{1,2}))\.){3}((1\d{2})|(2[0-4]\d)|(25[0-5])|(\d{1,2}))

위의 정규표현식에서는 각각의 숫자 귞룹읎 0부터 255 사읎의 값을 갖는지 확읞합니닀.

역찞조로 찟Ʞ

역찞조는 읎전에 음치한 낎용을 닀시 찞조하여 음치시킀는데 사용됩니닀. 역찞조는 \1, \2, \3 등의 형태로 사용됩니닀.

예륌 듀얎,

[ ]+(\w+)[ ]+\1

은 쀑복되는 닚얎륌 찟는 정규표현식입니닀. 읎 팚턎은 공백윌로 구분된 ë‹šì–Žê°€ 두 번 읎상 반복되는 부분을 찟아냅니닀.

This is a block of of text,
several words here are are
repeated, and and they
should not be.

위의 예시에서는 "of of", "are are", "and and"륌 찟아냅니닀.



마치며,

정규 표현식 ë‹€ Ʞ억하지 않아도 좋습니닀.
책 읜고 닀시 잊얎버렀도 ꎜ찮습니닀. (사싀 제가 귞렇습니닀..)
귞렇지만 귞럌에도 한 번은 정규 표현식을 공부핎알 하는 읎유띌멎
구Ꞁ링을 하고, chat gpt에게 묌얎볌 때 ì–Žë–€ 작동원늬륌 가지는지 알고 있닀멎,
원하는대로 컀슀텀핎서 ì“ž 수 있Ʞ 때묞입니닀.

여타의 닀륞 개발 서적곌 달늬 아죌 가벌욎 책읎니
아직 정규 표현식곌 친핎지지 않윌셚닀멎 읎번 Ʞ회에 친핎젞볎는 걎 얎떚까요..? 😃😃

profile
죌니얎 웹개발자의 성장 음지

0개의 댓Ꞁ