파이썬 정규 표현식

이주현·2023년 11월 28일

파이썬

목록 보기
8/8

정규 표현식

정규표현식이란?
전체 문서에서 지칭하고 싶은 대상(일부 글자)을 정규표현식으로 표현하는 것

Tip!
모든것을 뽑을 수 있게 만들어 두고 원하는걸 뽑는 방법을 사용하자!

정규 표현식 연습하기 좋은 사이트

정규표현식 규칙

1. .  = 모든 문자 12. 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

1. . 모든 문자 1개 => 어떤 문자든 상관없이 한개

문서 = 12345678 -> 한자리 숫자로 다 찾고 싶다면?
-> target = re.findall('.',문서)
문서 = '갤럭시S3 갤럭시S5 등' -> 갤럭시S 모든 시리즈를 찾고 싶다면?
-> target = re.findall('갤럭시S.',문서)
문서 = '알파코는 알차코를 사랑했다.' -> 알파코, 알차코를 찾고 싶다면?
-> target = re.findall('알.코',문서)

2. a? a가 0회 또는 1회 => 있거나 없거나

문서 = 알코는 알파코를 사랑해서 알파파코를 낳았다. -> 알코, 알파코를 찾고, 알파파코X
-> target = re.findall('알파?코',문서)
-> 알파?코 ==+0or 1+= 알코 or 알파코
문서 = '/news?no1&page~~' or '/news?no=&page~~' -> no = 값이 있든지 없든지
-> re.findall('no=\d?',문서)

3. a* a가 0회 이상 => 없거나 있거나 여러 개 있거나

문서 = 알코는 알파코를 사랑해서 알파파코를 낳았다. -> 알코, 알파코, 알파파코 다 찾기
-> re.findall('알파*코',문서)

4. a+ a가 1회 이상 => 하나 있거나 여러 개 있거나

문서 = 알코는 알파코를 사랑해서 알파파코를 낳았다. = 알파코,알파파코 다 찾기
-> re.findall('알파+코',문서)

5. a(b)c a 뒤, c 앞에 있는 b / abc에서 b만

문서 = 알파알파코 -> 알파를 한 묶음으로 지정하고 싶다면? -> (알파)
문서 = <a>text</a> -> <a></a> 사이에 있는 text만 지정하고 싶다면
-> <a>(text)</a>

6. [a-z] a부터 z까지 중 하나

7. [^가-힣] 가부터 힣까지 제외한 것들 중 하나

문서 = abcdefedcba -> a,b,c만 지정하고 싶다면?
-> re.findall('[abc]',문서)
[abc] == a랑 b랑 c 중에 해당하는 게 있다면 다 찾고 싶다! (*구분자는 없다)
문서 = a1b2c3d4e5*** -> 소문자 알파벳만 찾고 싶다면?
-> re.findall('[a-z]', 문서)
-숫자만 찾고 싶다면? -> re.findall('[0-9]', 문서)
문서 = 2023 한국경제 5% 성장 -> 한글을 제외하고 모두 삭제한다면?
-> re.findall('^[가-힣]', 문서)

8. + 회피 용법, 특수기호로써의 +말고 진짜 + =>escape code

지금까지 배운 특수기호 그 자체를 정규표현식으로 표현하고 싶다면? 앞에 역슬래시(\)를 쓴다

\d : 숫자(digit) -> \D : 숫자가 아닌 것
\w : 글자(word) -> \W : 글자가 아닌 것
\s : 공백(space) -> \S : 공백이 아닌 것
\d : 경계(boundary)

응용 = alpaco123@gmail.com -> 123(숫자열)을 찾고 싶다면?
-> re.findall('[0-9]', 문서)
123(숫자열)을 찾고 싶다면? -> re.findall('[0-9]+', 문서)

9. .+ 문자 여러개 - Greedy Quantifier => 문자열을 최대한 길게

10. .+? 문자 여러개 - Reluctant Quantifier => 문자열을 최대한 짧게

문서 = 신라면이 집에 있다면 먹고 싶다. -> 신라면을 찾으려면?
-> re.findall('신.+면',문서) / re.findall('신.+?면', 문서)
profile
Backend Delveloper

0개의 댓글