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?