파이썬의 RE 모듈을 사용해서 한다.
1. 정규 표현식(RE) 의 정의와 예시
정규 표현식(regular expression)은 문자열을 검색하고 매칭하는 패턴(pattern)을 정의하기 위한 표현식입니다. 정규 표현식은 일반적으로 문자열 검색, 문자열 대체, 문자열 분할 등의 작업에 사용됩니다.
- (): 그룹화
- ()를 사용하여 정규 표현식을 그룹화할 수 있습니다.
- 그룹화된 정규 표현식은 |, *, + 등의 메타 문자와 함께 사용할 수 있습니다.
- 그룹화된 정규 표현식은 매치 결과에서 그룹 번호를 갖게 되며, group() 메서드를 통해 그룹에 매칭된 문자열을 가져올 수 있습니다.
예시:
import re
# (python|java)는 "python" 또는 "java"와 매치됩니다.
# 매칭된 문자열은 group() 메서드로 가져올 수 있습니다.
m = re.match("(python|java)", "python")
print(m.group()) # 출력 결과: "python"
- *: 0개 이상메타 문자는 바로 앞에 있는 문자나 그룹이 0개 이상 나올 수 있음을 나타냅니다.
- 메타 문자는 바로 앞에 있는 문자나 그룹이 0개 이상 나올 수 있음을 나타냅니다.
- *를 사용하면 해당 문자 또는 그룹이 없거나, 1번 이상 반복될 수 있습니다.
예시:
import re
# ab*는 "a" 다음에 "b"가 0개 이상 나올 수 있음을 나타냅니다.
# "a"와 "b"가 0번 이상 반복되는 문자열과 매치됩니다.
m = re.match("ab*", "a")
print(m.group()) # 출력 결과: "a"
- |: 대체
- | 메타 문자는 "또는(or)" 의미로 사용됩니다.
- |를 사용하여 둘 중 하나의 문자열과 매치되도록 할 수 있습니다.
import re
# python|java는 "python" 또는 "java"와 매치됩니다.
m = re.match("python|java", "python")
print(m.group()) # 출력 결과: "python"
ex)
# Binary strings of length-2
pattern = 00|01|10|11 :
# Binary strings of length-3
pattern = (011)(011)(011):
# Binary strings starting with ‘0’
pattern = 0(011)*:
# Strings of ‘a’ and ‘b’ ending with ‘a’
pattern = (a|b)*a:
# Strings of ‘a’ and ‘b’ that include “aa” at least once
pattern = "(b|ab)*(a|b|ab)"
if re.match(pattern, myStr):
2. 정규 표현식(RE) 의 연산과 우선순위
정규 표현식은 다양한 연산을 지원합니다. 대표적인 연산으로는 문자 클래스, 반복, 그룹화, 대체 등이 있습니다. 이러한 연산들은 각각 우선순위가 있으며, 괄호를 사용하여 우선순위를 지정할 수 있습니다.
예를 들어, 다음 정규 표현식에서는 숫자와 알파벳 문자를 찾습니다.
/[0-9a-zA-Z]/
위의 정규 표현식은 대괄호([]) 안에 0부터 9까지의 숫자와 a부터 z까지의 소문자, A부터 Z까지의 대문자를 표현하는 문자 클래스를 사용합니다.
3. 정규 표현식(RE) 의 응용
정규 표현식은 다양한 분야에서 사용됩니다. 예를 들어, 다음과 같은 상황에서 사용될 수 있습니다.
- 텍스트 검색: 특정 문자열 패턴을 찾아서 텍스트를 검색합니다.
- 데이터 추출: 정해진 패턴에 따라서 텍스트에서 필요한 데이터를 추출합니다.
- 데이터 유효성 검사: 입력된 데이터가 정해진 패턴에 맞는지 검사하여 유효성을 검증합니다.
- 문자열 대체: 텍스트에서 특정 문자열을 다른 문자열로 대체합니다.
예를 들어, 이메일 주소의 유효성을 검증하거나, HTML 태그를 추출하거나, 문자열에서 특정 단어를 찾는 등의 작업에서 정규 표현식이 유용하게 사용될 수 있습니다.
아직 수업 안나간 부분
- 유한 오토마타의 정의와 종류
- 유한 오토마타의 그래프 표현과 전이 표
- 유한 오토마타의 응용
- 정규 표현식과 유한 오토마타의 상호 변환
- 정규 표현식과 유한 오토마타의 한계
'2023 상반기 > 바이오 컴퓨팅' 카테고리의 다른 글
Algorithm (0) | 2023.03.29 |
---|---|
Review of Algorithms2 (0) | 2023.03.22 |
Review of Algorithms (0) | 2023.03.21 |
RE 연습, 백준(14405, (0) | 2023.03.13 |
KMP 알고리즘 (0) | 2023.03.08 |
댓글