728x90
반응형
str.contains('?')를 사용했다가
의도대로 ? 를 포함한 문자가 출력이 안됨
str.contains('\?')
위와 같이 이스케이프 문자인 '\' 를 붙여줘야 의도대로 출력됨
이유는 '?' 문자가 정규식에서 0또는 1번의 앞의 패턴이 일치하는 문자열을 의미하기 때문에
예를들어 '2022.?' 를 쓴다면 2022.03.01과 같이 앞의 패턴이 일치하는 애들을 모두 가져오기 때문..
따라서 공부해보는 파이썬 정규식
're' 모듈을 사용하여 문자열 패턴을 찾거나 변경 가능
-gpt가 알려주는 기초 정규식
- .: 어떤 한 개의 문자를 의미합니다.
- *: 바로 앞 문자가 0개 이상인 패턴을 의미합니다.
- +: 바로 앞 문자가 1개 이상인 패턴을 의미합니다.
- ?: 바로 앞 문자가 0개 또는 1개인 패턴을 의미합니다.
- |: or 연산자를 의미합니다.
- ^: 문자열의 처음을 의미합니다.
- $: 문자열의 끝을 의미합니다.
- []: 문자 집합을 나타냅니다. 예를 들어, [abc]는 "a" 또는 "b" 또는 "c" 중 하나의 문자와 일치합니다.
- [a-z]: 소문자 a부터 z까지 중 하나의 문자와 일치합니다.
- [A-Z]: 대문자 A부터 Z까지 중 하나의 문자와 일치합니다.
- [0-9]: 숫자 0부터 9까지 중 하나의 문자와 일치합니다.
- \d: 숫자를 의미합니다. [0-9]와 같습니다.
- \w: 숫자 또는 문자(알파벳)를 의미합니다.
- \s: 공백 문자(스페이스, 탭 등)를 의미합니다.
- \b: 단어의 경계를 의미합니다.
- 활용 예시 (숫자 추출)
import re
text = "My phone number is 010-1234-5678"
# 1개이상 반복되는 숫자
numbers = re.findall('\d+',text)
#['010','1234','5678'] 출력
print(numbers)
- 활용 예시 (이메일주소 추출)
import re
text = "My email address is john@example.com"
email = re.findall('[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', text)
#['john@example.com'] 출력
print(email)
- 활용 예시 (특정 문자열 치환)
import re
text = "My phone number is 010-1234-5678"
#re.sub 활용 하나이상 반복되는 숫자 대체
new_text = re.sub('\d+','****',text)
# My phone number is ****-****-**** 출력
print(new_text)
728x90
반응형
'tool 공부 > PYTHON' 카테고리의 다른 글
[Python] 날짜 간격 구하기 (0) | 2023.07.21 |
---|---|
파이썬 .reset_index() 인덱스 없애기 (0) | 2023.07.02 |
파이썬 공휴일 전날 여부 컬럼 생성 (0) | 2023.05.08 |
파이썬 날짜컬럼으로 요일컬럼 만들기 (1) | 2023.04.24 |
파이썬 메모리 확인 (0) | 2023.04.24 |