regularExpression

Regular Expression

์ •๊ทœ ํ‘œํ˜„์‹ (Regular Expression)

ํŠน์ˆ˜๋ฌธ์ž

์„ค๋ช…

.

ํ•œ ๊ฐœ์˜ ์ž„์˜์˜ ๋ฌธ์ž

?

์•ž์˜ ๋ฌธ์ž๊ฐ€ ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค

*

์•ž์˜ ๋ฌธ์ž๊ฐ€ ๋ฌดํ•œ๊ฐœ๋กœ ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

+

์•ž์˜ ๋ฌธ์ž๊ฐ€ ์ตœ์†Œ ํ•œ ๊ฐœ ์ด์ƒ ์กด์žฌ (๋ฌธ์ž๊ฐ€ 1๊ฐœ ์ด์ƒ)

^

๋’ค์˜ ๋ฌธ์ž๋กœ ๋ฌธ์ž์—ด์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

$

์•ž์˜ ๋ฌธ์ž๋กœ ๋ฌธ์ž์—ด์ด ๋๋‚ฉ๋‹ˆ๋‹ค.

{์ˆซ์ž}

์ˆซ์ž๋งŒํผ ๋ฐ˜๋ณต

{์ˆซ์ž1, ์ˆซ์ž2}

์ˆซ์ž1 ์ด์ƒ ์ˆซ์ž2 ์ดํ•˜๋งŒํผ ๋ฐ˜๋ณต

{์ˆซ์ž,}

์ˆซ์ž ์ด์ƒ๋งŒํผ ๋ฐ˜๋ณต

[๋ฌธ์ž]

๋ฌธ์ž๋“ค ์ค‘ ํ•œ๊ฐœ์˜ ๋ฌธ์ž์™€ ๋งค์น˜

ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž๋ฅผ ๋งค์น˜

. ํ•œ ๊ฐœ์˜ ์ž„์˜์˜ ๋ฌธ์ž

r = re.compile("a.c")
print(r.search("abd")) # None
print(r.search("abc")) # <re.Match object; span=(0, 3), match='abc'>

? ์•ž์˜ ๋ฌธ์ž๊ฐ€ ์กด์žฌ or ๋ฏธ์กด์žฌ

r = re.compile("abc?") # c๋Š” ์—†์–ด๋„ ๋˜๊ณ , ์žˆ๋”๋„ ๋˜์ง€๋งŒ, a์™€ b๋Š” ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ abc๋Š” ํ•˜๋‚˜๋งŒ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค
print(r.search("abc")) # <re.Match object; span=(0, 3), match='abc'>
print(r.search("ab")) # <re.Match object; span=(0, 2), match='ab'>

* ์•ž์˜ ๋ฌธ์ž๊ฐ€ 0๊ฐœ ์ด์ƒ

r = re.compile("ab*c") # b ๋Š” 0๊ฐœ ์ด์ƒ์ด๋ผ์„œ ์žˆ์–ด๋„ ๋˜๊ณ  ์—†์–ด๋„ ๋˜๋ฉฐ, ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ b๋ฅผ ์ œ์™ธํ•œ a c๋Š” ํ•˜๋‚˜๋งŒ ์กด์žฌ 
print(r.search("ac")) # <re.Match object; span=(0, 2), match='ac'>
print(r.search("abc")) # <re.Match object; span=(0, 3), match='abc'>
print(r.search("abbbc")) # <re.Match object; span=(0, 5), match='abbbc'>

+ ์•ž์˜ ๋ฌธ์ž๊ฐ€ 1๊ฐœ ์ด์ƒ

r = re.compile("ab+c")
print(r.search("ac")) # None
print(r.search("abc")) # <re.Match object; span=(0, 3), match='abc'>
print(r.search("abbbc")) # <re.Match object; span=(0, 5), match='abbbc'>

^ ์‹œ์ž‘๋˜๋Š” ๊ธ€์ž๋ฅผ ์ง€์ •

r = re.compile("^bc")
print(r.search("abc")) # None
print(r.search("bc")) # <re.Match object; span=(0, 2), match='bc'>

{์ˆซ์ž} ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋งŒํผ ๋ฐ˜๋ณต

r = re.compile("ab{2}c")
print(r.search("abc")) # None
print(r.search("abbc")) # <re.Match object; span=(0, 4), match='abbc'>
print(r.search("abbbc")) # None

{์ˆซ์ž1, ์ˆซ์ž2} ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ์ˆซ์ž1 ์ด์ƒ, ์ˆซ์ž2 ์ดํ•˜๋งŒํผ ๋ฐ˜๋ณต

r = re.compile("ab{2,4}c")
print(r.search("abc")) # None
print(r.search("abbc")) # <re.Match object; span=(0, 4), match='abbc'>
print(r.search("abbbc")) # <re.Match object; span=(0, 5), match='abbbc'>
print(r.search("abbbbc")) # <re.Match object; span=(0, 6), match='abbbbc'>
print(r.search("abbbbbc")) # None

{์ˆซ์ž,} ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ์ˆซ์ž ์ด์ƒ ๋งŒํผ ๋ฐ˜๋ณต

r = re.compile("ab{2,}c")
print(r.search("abc")) # None
print(r.search("abbc")) # <re.Match object; span=(0, 4), match='abbc'>
print(r.search("abbbc")) # <re.Match object; span=(0, 5), match='abbbc'>
print(r.search("abbbbc")) # <re.Match object; span=(0, 6), match='abbbbc'>
print(r.search("abbbbbc")) # <re.Match object; span=(0, 7), match='abbbbbc'>

[๋ฌธ์ž] ๋ฌธ์ž๋“ค ์ค‘ ํ•œ๊ฐœ์˜ ๋ฌธ์ž์™€ ๋งค์น˜

  • [a-zA-Z]๋Š” ์•ŒํŒŒ๋ฒณ ์ „๋ถ€๋ฅผ ์˜๋ฏธ, [0-9]๋Š” ์ˆซ์ž ์ „๋ถ€๋ฅผ ์˜๋ฏธ

r = re.compile("[abc]")
print(r.search("a")) # <re.Match object; span=(0, 1), match='a'>
print(r.search("d")) # None

์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋งค์น˜

r = re.compile("[^abc]")
print(r.search("a")) # None
print(r.search("d")) # <re.Match object; span=(0, 1), match='d'>

์ •๊ทœ ํ‘œํ˜„์‹ ๋ฌธ์ž ๊ทœ์น™

๋ฌธ์ž๊ทœ์น™

์„ค๋ช…

\

์—ญ ์Šฌ๋ž˜์‰ฌ ๋ฌธ์ž ์ž์ฒด๋ฅผ ์˜๋ฏธ

\d

๋ชจ๋“  ์ˆซ์ž๋ฅผ ์˜๋ฏธ, [0-9]์™€ ๋™์ผํ•œ ์˜๋ฏธ

\D

์ˆซ์ž๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์˜๋ฏธ, ์™€ ๋™์ผํ•œ ์˜๋ฏธ

\s

๊ณต๋ฐฑ์„ ์˜๋ฏธ, [\t\n\r\f\v]์™€ ๋™์ผํ•œ ์˜๋ฏธ

\S

๊ณต๋ฐฑ์„ ์ œ์™ธํ•œ ๋ฌธ์ž๋ฅผ ์˜๋ฏธ, ์™€ ๋™์ผํ•œ ์˜๋ฏธ

\w

๋ฌธ์ž ๋˜๋Š” ์ˆซ์ž๋ฅผ ์˜๋ฏธ, [a-zA-Z0-9]์™€ ๋™์ผํ•œ ์˜๋ฏธ

\W

๋ฌธ์ž ๋˜๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ์˜๋ฏธ, ์™€ ๋™์ผํ•œ ์˜๋ฏธ

Last updated

Was this helpful?