정규 표현식 연습장 - https://regexr.com/
import re
pattern = r'정규식'

메타 문자 : 특수한 의미를 가진 문법의 역할을 함
. ^ $ * + ? { } [ ] \ | ( )
해당 문제를 그대로 매칭하고 싶다면 Escape 문자인 \를 붙여 사용
. 기호아무 문자 하나를 지칭. 공백 포함, 줄 바꿈 문자 제외
[ ] 기호[ ] 안의 문자 들 중 하나의 문자와 매칭
[^ ] 기호[^ ] 안의 문자를 제외한 문자들 중 하나의 문자와 매칭
* 기호바로 앞 문자가 0개 이상일 경우
ex) r'ab*.c' >>> abec, adc
+ 기호바로 앞 문자가 최소 1개 이상
ex) s로 끝나는 문자 : r'\w+s'
이러한 반복관련 기능들은 가능한 조합 중 가장 긴것을 매칭
반대로 가장 짧을 것을 매칭하려면 반복관련 기호 뒤 ?를 붙이면 됨
r'.+?'
? 기호바로 앞 문자가 있을 수도 없을 수도 있는 경우
{ } 기호{숫자} 형태로 사용, 바로 앞 문자가 숫자만큼 반복
^ 기호글의 시작을 의미
각 줄의 시작을 찾고 싶다면 Multi-line flag 지정
re.split(pattern, text, re.MULTILINE)
$ 기호글의 끝을 의미
| 기호or과 같은 기능. 여러 패턴 중 하나랑 매칭
( ) 기호텍스트 캡쳐. 캡쳐된 텍스트는 캡쳐된 순서대로 \숫자 형태로 불러오는 것이 가능. 괄호이므로 우선 순위가 있다.
캡쳐된 텍스트는 1번부터 사용 가능
1-2-3
1-2-2
3-9-8
3-9-9
pattern = r'\d-(\d)-\1' # ()안 \d, 숫자와 같은 것을 캡쳐해서 \1로 불러옴.
>>>
1-2-2
3-9-9
(?: ) 기호일반 괄호. 캡쳐 x
(?= ) 기호뒷 패턴을 확인. D(?=R) 형태로 사용
R이 바로 뒤의 D를 매칭하며 R부분은 포함하지 않음
teaching
pattern = r'\w+(?=ing)` # ing가 뒤에 있는 텍스트 매칭
>>>
teach
(?<= ) 기호앞 패턴을 확인. (?<=R)D 형태
R이 바로 앞에 있는 D를 매칭, R부분은 포함하지 않음
출처 - 부스트캠프 AI Tech 자료