정규식(Regex Expression)

1. Snippets

1.1. 전화번호 찾기

숫자를 찾고 싶은 경우 \d를 이용하고 수량을 지정하고 싶은 경우 {}에 숫자를 기입한다. {}의 내부 숫자는 띄어쓰기 없이 입력한다.

text = "나의 전화번호는 032-123-3456 혹은 02-1234-9876 혹은 01011112222 이다."
phone_regex1 = re.compile(r"0\d{1,2}-\d{3,4}-\d{4}")
phone_regex2 = re.compile(r"0\d{9,10}")

for match in re.finditer(phone_regex1, text):
    print(f'str({match.group()}) start({match.start()}) end({match.end()})')
    
for match in re.finditer(phone_regex2, text):
    print(f'str({match.group()}) start({match.start()}) end({match.end()})')
str(032-123-3456) start(9) end(21)
str(02-1234-9876) start(25) end(37)
str(01011112222) start(41) end(52)


1.2. 쉼표로 구분된 숫자 찾기

()는 Group을 뜻한다. finall 수행시 Group은 Tuple의 인자로 출력된다.

text = """
I have a 64,000,000 years old egg.
I have 2 babies.
"""
number_regex = re.compile(r"(\d{1,3}(,\d{3})*)")
result_list = re.findall(number_regex, text)

print(result_list)
[('64,000,000', ',000'), ('2', '')]


1.3. 괄호 내의 문자열 찾기

.*는 모든 문자를 뜻하기 때문에 >의 마지막 문자열까지 하나의 match로 인식한다. .*을 사용할 경우 보통 .*?을 사용하여야 문제가 원하는 결과를 얻을 수 있다.

text = "Good <TO SERVE HUMANS> <TO SERVE DOG>"

bracket_regex = re.compile(r"<.*?>")
result_list = re.findall(bracket_regex, text)

print(result_list)
['<TO SERVE HUMANS>', '<TO SERVE DOG>']


2. 문법

2.1. Character class

\d : Digit charcters (numbers)
\w : Word characters (letters & numbers)
\s : Space characters (space, tab, \n)

\D : Non-digit
\W : Non-word
\S : None-space


2.2. 임의의 Character class

[]를 이용하여 character class를 만들 수 있다.

[aeiouAEIOU] : 모음 Character
[^aeiouAEIOU] : 모음을 제외한 Character
[\(\)] : () Character


2.3. 수량 지정

\d : One digit
\d? : Zero or one digit
\d* : Zero or more digits
\d+ : One or more digits
\d{3} : Exactly 3 digits
\d{3,5} : Btwn 3 and digits
\d{3,} : 3 or more digits


2.4. Anchors

^ : Start of string, or start of line in multiline pattern
\A : Start of string
$ : End of string, or end of line in multi-line pattern
\Z : End of string
\b : Word boundary
\B : Not word boundary
< : Start of word
> : End of word


3. Cheat sheet[2]

Cheat sheet
Cheat sheet

cheat sheet Download


4. 참고자료

[1] https://www.youtube.com/watch?v=abrcJ9MpF60&t=1486s
[2] https://cheatography.com/davechild/cheat-sheets/regular-expressions/