정규표현식이란?
전체 문서에서 지칭하고 싶은 대상(일부 글자)을 정규표현식으로 표현하는 것
Tip!
모든것을 뽑을 수 있게 만들어 두고 원하는걸 뽑는 방법을 사용하자!
- https://regex101.com/
- https://pythex.org/
정규 표현식을 공부한 다음 연습 할 곳- https://regexone.com/
정규표현식 규칙
1. . = 모든 문자 1개
2. a? = a가 0회 또는 1회 (물음표 앞 기준)
3. a* = a가 0회 이상
4. a+ = a가 1회 이상
5. a(b)c = a 뒤, c 앞에 있는 b / abc에서 b만
6. [a-z] = a부터 z까지 중 하나
7. [^가-힣] = 가부터 힣까지 제외한 것들 중 하나
8. \+ = 회피 용법, 특수기호로써의 + 말고 진짜 +
9. .+ = 문자 여러개 - Greedy Quantifier
10. .+? = 문자 여러개 - Reluctant Quantifier
문서 = 12345678 -> 한자리 숫자로 다 찾고 싶다면?
-> target = re.findall('.',문서)
문서 = '갤럭시S3 갤럭시S5 등' -> 갤럭시S 모든 시리즈를 찾고 싶다면?
-> target = re.findall('갤럭시S.',문서)
문서 = '알파코는 알차코를 사랑했다.' -> 알파코, 알차코를 찾고 싶다면?
-> target = re.findall('알.코',문서)
문서 = 알코는 알파코를 사랑해서 알파파코를 낳았다. -> 알코, 알파코를 찾고, 알파파코X
-> target = re.findall('알파?코',문서)
-> 알파?코 == 알 + 파 0회 or 1회 + 코 = 알코 or 알파코
문서 = '/news?no1&page~~' or '/news?no=&page~~' -> no = 값이 있든지 없든지
-> re.findall('no=\d?',문서)
문서 = 알코는 알파코를 사랑해서 알파파코를 낳았다. -> 알코, 알파코, 알파파코 다 찾기
-> re.findall('알파*코',문서)
문서 = 알코는 알파코를 사랑해서 알파파코를 낳았다. = 알파코,알파파코 다 찾기
-> re.findall('알파+코',문서)
문서 = 알파알파코 -> 알파를 한 묶음으로 지정하고 싶다면? -> (알파)
문서 = <a>text</a> -> <a>와 </a> 사이에 있는 text만 지정하고 싶다면
-> <a>(text)</a>
문서 = abcdefedcba -> a,b,c만 지정하고 싶다면?
-> re.findall('[abc]',문서)
[abc] == a랑 b랑 c 중에 해당하는 게 있다면 다 찾고 싶다! (*구분자는 없다)
문서 = a1b2c3d4e5*** -> 소문자 알파벳만 찾고 싶다면?
-> re.findall('[a-z]', 문서)
-숫자만 찾고 싶다면? -> re.findall('[0-9]', 문서)
문서 = 2023 한국경제 5% 성장 -> 한글을 제외하고 모두 삭제한다면?
-> re.findall('^[가-힣]', 문서)
지금까지 배운 특수기호 그 자체를 정규표현식으로 표현하고 싶다면? 앞에 역슬래시(\)를 쓴다
\d : 숫자(digit) -> \D : 숫자가 아닌 것
\w : 글자(word) -> \W : 글자가 아닌 것
\s : 공백(space) -> \S : 공백이 아닌 것
\d : 경계(boundary)
응용 = alpaco123@gmail.com -> 123(숫자열)을 찾고 싶다면?
-> re.findall('[0-9]', 문서)
123(숫자열)을 찾고 싶다면? -> re.findall('[0-9]+', 문서)
문서 = 신라면이 집에 있다면 먹고 싶다. -> 신라면을 찾으려면?
-> re.findall('신.+면',문서) / re.findall('신.+?면', 문서)