-------------코딩-------------/Python 기초 코딩
정규 표현식 - 메타 문자
탶선
2021. 2. 23. 01:29
반응형
정규표현식 - 특정 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어(문자열)를 처리할 때 사용하는 기법
문자 클래스 [ ]
- [ ] - [ ] 사이의 문자들과 매치
- ex)
- [a-zA-Z] - 알파벳 모두
- [0-9] - 숫자
Dot(.)
- a.b - a와 b 사이의 모든 문자 매치 // \n을 제외한 모든 문자 한 개와 매치 // 여러개 사용 가능
- ex)
- a.b - "aab", "a1b", "a#b" 모두 매치
- a..b - "axxb", a"22b", a##b" 모두 매치
import re
s = "a1234bllla#b"
p = re.compile('a.b')
m = p.findall(s)
print(m)
# ['a#b']
s = "a1234bllla#!@b"
p = re.compile('a...b') # .이 3개
m = p.findall(s)
print(m)
# ['a#!@b']
a[.]b - 위의 모든 문자의 의미 아님 주의// . 그대로 의미
import re
s = "a.b"
p = re.compile('a[.]b') # .이 3개
m = p.findall(s)
print(m)
* (반복)
- 0회 이상 반복(없어도 상관 없음)
import re
s = "aaaaab"
p = re.compile('a*b')
print(p.findall(s)) # ['aaaaab']
+ (반복)
- 1회 이상 반복
import re
s = "ab"
p = re.compile('a+b')
print(p.findall(s)) # ['ab']
s = "abababcd"
p = re.compile('ab+')
print(p.findall(s)) # ['ab']
{} (반복)
- ex)
- {a,b} - a회 이상 b회 이하 반복횟수 지정
import re
text = 'hi my naame is nahi naaaa'
p = re.compile('na{1,2}')
print(re.findall(p, text))
# ['naa', 'na', 'naa']
- | or 조건식
import re
text = 'hi my naame is nahi naaaa'
p = re.compile('my|hi')
print(re.findall(p, text))
# ['hi', 'my', 'hi']
- ^ 문자열의 시작
import re
text = 'hello hi i am a boy'
p = re.compile('^hello')
print(re.findall(p, text))
# ['hello']
- $ 문자열의 끝
import re
text = 'hello hi boy i am a boy'
p = re.compile('boy$')
print(re.findall(p, text))
# ['boy']
- ? 있어도 되고 없어도 됨
- ex)
- ab?c -- abc --> match("b"가 1번 사용됨)
- ab?c -- ac --> match("b"가 0번 사용됨)
- ex)
import re
text = 'dont forget fo foo'
p = re.compile('fo?')
print(re.findall(p, text))
# ['fo', 'fo', 'fo']
- \ - 메타 문자를 일반 문자로 인식
- () - 그룹핑, 추출할 패턴 지정, 검색 결과의 특정 부분만 출력
반응형