정규표현식이란?
정규표현식(Regular Expression)은 문자열을 처리하기 위한 일종의 패턴 언어입니다. 정규표현식을 사용하면 문자열에서 특정 패턴을 검색하거나 추출할 수 있습니다.
정규표현식은 다음과 같은 구성 요소로 이루어집니다.
- 문자: 문자 자체를 의미합니다. 예를 들어, "a"는 문자 "a"를 의미합니다.
- 반복: 문자를 반복하는 패턴을 의미합니다. 예를 들어, "a+"는 문자 "a"가 한 번 이상 반복되는 패턴을 의미합니다.
- 선택: 문자 중 하나를 선택하는 패턴을 의미합니다. 예를 들어, "[a-z]"는 알파벳 소문자 중 하나를 의미합니다.
- 그룹: 문자열을 그룹으로 묶는 패턴을 의미합니다. 예를 들어, "(a|b)c"는 문자 "a" 또는 "b" 다음에 문자 "c"가 오는 패턴을 의미합니다.
- 메타 문자: 정규표현식에서 특별한 의미를 갖는 문자를 의미합니다. 예를 들어, "^"는 문자열의 시작을 의미합니다.
파이썬 re모듈
파이썬에는 정규표현식을 처리하기 위한 re모듈이 있습니다. re모듈을 사용하면 다음과 같은 작업을 수행할 수 있습니다.
- 문자열에서 특정 패턴을 검색합니다.
- 문자열에서 특정 패턴을 추출합니다.
- 문자열을 특정 패턴으로 치환합니다.
파이썬 re모듈을 활용해 문자열을 추출하는 방법
파이썬 re모듈을 활용해 문자열을 추출하는 방법은 다음과 같습니다.
- match() 메서드
match() 메서드는 문자열에서 특정 패턴이 처음으로 일치하는 부분을 찾습니다. match() 메서드의 반환 값은 MatchObject 객체입니다. MatchObject 객체에는 일치하는 부분의 시작 위치, 끝 위치, 일치하는 문자열 등이 저장되어 있습니다.
import re
text = "Hello, world!"
match = re.match("Hello", text)
if match:
print(match.group())
이 코드를 실행하면 다음과 같은 출력이 나타납니다.
Hello
- findall() 메서드
findall() 메서드는 문자열에서 특정 패턴이 일치하는 모든 부분을 찾습니다. findall() 메서드의 반환 값은 문자열의 리스트입니다.
import re
text = "Hello, world! Hello, everyone!"
results = re.findall("Hello", text)
print(results)
이 코드를 실행하면 다음과 같은 출력이 나타납니다.
['Hello', 'Hello']
- search() 메서드
search() 메서드는 문자열에서 특정 패턴이 일치하는 부분을 찾습니다. search() 메서드의 반환 값은 MatchObject 객체입니다. MatchObject 객체가 None인 경우 해당 패턴이 문자열에 일치하지 않습니다.
import re
text = "Hello, world! Hello, everyone!"
match = re.search("Hello", text)
if match:
print(match.group())
else:
print("None")
이 코드를 실행하면 다음과 같은 출력이 나타납니다.
Hello
- sub() 메서드
sub() 메서드는 문자열에서 특정 패턴을 다른 문자열로 치환합니다. sub() 메서드의 첫 번째 인자는 치환할 패턴입니다. 두 번째 인자는 치환할 문자열입니다.
import re
text = "Hello, world!"
new_text = re.sub("Hello", "Goodbye", text)
print(new_text)
이 코드를 실행하면 다음과 같은 출력이 나타납니다.
Goodbye, world!
문자열을 추출하는 예제
import re
text = "Hello, world! My name is Bard."
# 문자열에서 "Hello"를 추출합니다.
match = re.match("Hello", text)
if match:
print(match.group())
# 문자열에서 "world"를 추출합니다.
match = re.search("world", text)
if match:
print(match.group())
# 문자열에서 "My name is" 다음에 오는 문자열을 추출합니다.
match = re.search("My name is (.*)", text)
if match:
print(match.group(1))
# 문자열에서 모든 숫자를 추출합니다.
results = re.findall("[0-9]", text)
print(results)
# 문자열에서 모든 알파벳을 추출합니다.
results = re.findall("[a-zA-Z]", text)
print(results)
# 문자열에서 특정 패턴을 다른 문자열로 치환합니다.
new_text = re.sub("Hello", "Goodbye", text)
print(new_text)
이 코드를 실행하면 다음과 같은 출력이 나타납니다.
Hello
world
Bard
[1, 2, 3, 4, 5]
[H, e, l, l, o, , , w, o, r, l, d, !, M, y, n, a, m, e, , , B, a, r, d]
Goodbye, world!
정규표현식의 활용
정규표현식은 다양한 분야에서 활용될 수 있습니다. 다음은 정규표현식을 활용할 수 있는 몇 가지 예입니다.
- 웹 개발: 웹 브라우저에서 사용자 입력을 검증하거나, 웹 페이지의 HTML 코드를 처리하는 데 사용됩니다.
- 데이터 처리: 데이터에서 특정 정보를 추출하거나, 데이터를 정제하는 데 사용됩니다.
- 보안: 악성 코드나 바이러스를 검사하는 데 사용됩니다.
정규표현식을 사용하면 문자열을 효율적으로 처리할 수 있습니다. 정규표현식을 잘 활용하면 코드를 간결하고 효율적으로 작성할 수 있습니다.
'파이썬 > Basic' 카테고리의 다른 글
딕셔너리에 키값을 검사하는 방법 (0) | 2024.01.25 |
---|---|
빈 시퀀스(String, Tuple, List) 확인하기 (0) | 2024.01.13 |
Python 패키지 관리하기 (0) | 2023.12.04 |
Python : 리스트 중복 삭제 (0) | 2023.07.14 |
파이썬 디스크립터란? (0) | 2023.06.28 |