정규표현식은 패턴을 갖는 문자열의 집합을 표현하는데에 사용되는 기법이다. 주로 복잡한 문자열에서 특정한 패턴과 일치하는 문자열을 찾고 대체하기 위해서 사용하여 복잡한 문자열을 처리할 때 유용하다.
파이썬에서는 re 패키지를 통해 정규표현식을 사용할 수 있다.
Pattern 객체의 메소드
match | 전체 문자열에서 시작부터 패턴과 일치하는 첫번째 문자열을 찾아 매치 객체로 반환 |
search | 전체 문자열에서 패턴과 일치하는 첫번째 문자열을 찾아 매치 객체로 반환 |
findall | 전체 문자열에서 패턴과 일치하는 모든 문자열을 찾아 리스트로 반환 |
finditer | 전체 문자열에서 패턴과 일치하는 모든 문자열을 찾아 반복 가능 객체로 반환 |
- match() : 시작부터 패턴과 일치하는 첫번째 문자열 찾기
p = re.compile('[a-z]+')
string = 'abcd2ab'
result = p.match(string)
print(result)
결과 :
<_sre.SRE_Match object; span=(0, 4), match='abcd'>
문자열의 첫 시작인 a부터 d까지 일치하기에 위와 같은 결과를 반환한다.
만약 일치하지 않는다면 None 반환하게 되는데
abcd2ab가 아닌 2abcd2ab였다면 시작 문자가 a가 아니기 때문에 None을 반환할 것이다.
- search() : 패턴과 일치하는 첫번째 문자열 찾기
p = re.compile('[a-z]+')
string = 'abcd2ab'
result = p.search(string)
print(result)
결과 :
<_sre.SRE_Match object; span=(0, 4), match='abcd'>
문자열내에서 a부터 d까지 일치하기에 위와 같은 결과를 반환한다.
abcd2ab가 아닌 2abcd2ab였더라도 문자열내에 abcd라는 값이 있기때문에 패턴을 찾았다고 반환을 할 것이다.
이 함수도 일치하는 값이 없다면 None을 반환한다.
- findall() : 패턴과 일치하는 모든 문자열 찾기
p = re.compile('[a-z]+')
string = 'abcd2ab'
result = p.findall(string)
print(result)
결과 :
['abcd', 'ab']
이 함수는 전체 문자열에서 패턴과 일치하는 모든 문자열을 찾아 리스트로 반환한다.
- finditer() : 패턴과 일치하는 모든 문자열 찾기
p = re.compile('[a-z]+')
string = 'abcd2ab'
result = p.finditer(string)
for i in result:
print(i)
결과 :
<_sre.SRE_Match object; span=(0, 4), match='abcd'>
<_sre.SRE_Match object; span=(5, 7), match='ab'>
이 함수는 전체 문자열에서 패턴과 일치하는 모든 문자열을 찾아 반복 가능 객체로 반환한다.
참고자료 :
728x90
'프로그래밍 > Python' 카테고리의 다른 글
[Pandas] 데이터프레임 인덱스 새로 설정하기(내포for문) (0) | 2022.08.20 |
---|---|
[Pandas] 데이터프레임 정렬하기 (0) | 2022.08.20 |
[Pandas] csv파일 저장 및 읽어오기(한글깨짐 방지, 파일변환 속성) (0) | 2022.08.18 |
[Python] 리스트안에 특정 값 개수 세기 (0) | 2022.08.18 |
[Pandas] 데이터 프레임 열 추가/ 갱신/ 삭제 (0) | 2022.08.18 |