정규표현식 (Regular Expression)

박동규·2022년 5월 7일
0

python

목록 보기
2/3
post-thumbnail

📌 정규표현식

🔎 1. 정규표현식이란?

📋 문자열에서 특정 문자 조합을 찾기 위한 패턴!

👉 에러를 포함한 로그에서 원하는 특정 패턴을 갖는 문자열을 찾기 위해 사용된다.

에러가 로그파일에 저장되어서 찾기 힘들경우 사용하면 용이할 것 같다..!


🔎 2. 대표문자 (Meta sequence)

import re

search_target = '''Luke Skywarker 02-123-4567 luke@daum.net
다스베이더 070-9999-9999 darth_vader@gmail.com
princess leia 010 2454 3457 leia@gmail.com'''

👉 \d: digit -> 숫자 하나를 찾는 표현식

regex1 = r'\d'
result1 = re.findall(regex1, search_target)

print(" ".join(result1))

👉 \w: word-> 문자 하나를 찾는 표현식

regex2 = r'\w'
result2 = re.findall(regex2, search_target)

print(" ".join(result2))

👉 \d+: digit+ -> 숫자 하나 이상을 찾는 표현식

regex3 = r'\d+'
result3 = re.findall(regex3, search_target)

print(" ".join(result3))

👉 [1-9]\d+:  앞자리가 0이 아닌 두 자리 이상의 숫자를 찾는 표현식

regex4 = r'[1-9]\d+'
result4 = re.findall(regex4, search_target)

print(" ".join(result4))

👉 [1-9]\d*: -> 앞자리가 0이 아닌 한 자리 또는 두 자리 이상의 숫자를 찾는 표현식

regex5 = r'[1-9]\d*'
result5 = re.findall(regex5, search_target)

print(" ".join(result5))

👉 '\d+-?\d+-?\d+: -> "숫자-숫자-숫자" 를 찾는 표현식

regex6 = r'\d+-?\d+-?\d+'
result6 = re.findall(regex6, search_target)

print(" ".join(result6))


🔎 3. 횟수 정하기 (Quantifier)

import re

search_target = '''이상한 전화번호 0030589-5-95826
Luke Skywarker 02-123-4567 luke@daum.net
다스베이더 070-9999-9999 darth_vader@gmail.com
princess leia 010 2454 3457 leia@gmail.com'''

👉 \d+[- ]?\d+[- ]?\d+: -> "숫자-숫자-숫자" 를 찾는 표현식

regex1 = r'\d+[- ]?\d+[- ]?\d+'
result1 = re.findall(regex1, search_target)

print(result1)

👉 {n}: 숫자, 문자 또는 기호가 n번 나오는 문자열을 찾는 표현식

regex2 = r'\d{2}[- ]?\d{3}[- ]?\d{4}'
result2 = re.findall(regex2, search_target)

print(result2)

👉 {n,m}: n~m번 나오는 문자열 찾는 표현식

regex3 = r'\d{2,3}[- ]?\d{3,4}[- ]?\d{4}'
result3 = re.findall(regex3, search_target)

print(result3)


🔎 4. 특정 문자 고르기

import re

search_target = '''Luke Skywarker 02-123-4567 luke@daum.net
다스베이더 070-9999-9999 darth_vader@gmail.com
princess leia 010 2454 3457 leia@gmail.com'''

👉 []: 모음선택 => 대괄호 안의 글자를 모두 선택하고 싶을 때 사용하는 표현식

regex1 = r'[aeiou]'
result1 = re.findall(regex1, search_target)

print(" ".join(result1))

👉 [a-z]: 소문자를 찾는 표현식

regex2 = r'[a-z]'
result2 = re.findall(regex2, search_target)

print(" ".join(result2))

👉 [a-z]+: 소문자로 구성된 문자열을 찾는 표현식

regex3 = r'[a-z]+'
result3 = re.findall(regex3, search_target)

print(" ".join(result3))

👉 [가-힣]+: 연속된 한글단어 선택

regex4 = r'[가-힣]+'
result4 = re.findall(regex4, search_target)

print(" ".join(result4))


정규표현식의 meta sequence는 위 보다 훨씬 많을건데, 나중에 찾아서 쓰는걸로..!

ref.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions

https://programmers.co.kr/learn/courses/11

profile
근데 이제 불타는

0개의 댓글