정규 표현식에 원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자
. ^ $ * + ? { } [ ] \ | ( )
[]문자 클래스로 만들어진 정규식 : [] 사이의 문자들과 매치된다
문자 클래스를 만드는 메타 문자인 [] 사이에는 어떤 문자도 들어갈 수 있다.
[] 예시1정규 표현식 [abc]
의미 : a, b, c 중 한 개의 문자와 매치
"a", "before", "dude" 문자열에서 정규표현식 [abc] 매치여부 확인
a : 정규식과 일치하는 문자인 "a"가 있으므로 매치before : 정규식과 일치하는 문자인 "b"가 있으므로 매치dude : 정규식과 일치하는 문자인 a, b, c 중 어느 하나도 포함하고 있지 않으므로 매치되지 않음[] 안에 하이픈 -문자클래스 [] 안의 두 문자 사이에 하이픈-을 사용하면 두 문자 사이의 범위From - To 를 의미한다
[a-c] 정규표현식 : [abc]와 동일[0-5] 정규표현식 : [012345]와 동일문자클래스 [] 안에는 어떤 문자나 메타 문자던 사용이 가능하지만 ^ 메타문자 하나만 주의하면 된다
^ 메타문자를 사용 : 반대 not라는 의미[^0-9] 정규표현식은 숫자가 아닌 문자만 매치된다- 사용한 문자클래스 예시[a-zA-Z] : 알파벳 모두[0-9] : 숫자.정규표현식의 Dot, 메타 문자 : 줄바꿈 문자 \n 을 제외한 모든 문자와 매치된다
정규식을 작성할 때 re.DOTALL 옵션을 주면 \n 문자와도 매치된다
a, b 라는 문자 사이에 어떤 문자가 들어가도 모두 매치된다는 정규식  # "a + 모든문자 + b"
a, b
a, b 문자열과 매치되고, a0b 문자열과는 매치되지 않는 정규식# a + Dot(.)문자 + b
a[.]b
만약 문자 클래스 [] 내에 Dot. 메타 문자가 사용된거면
"모든 문자"라는 의미가 아닌 문자 . 그대로를 의미한다.
혼동하지 않도록 주의
*+{m,n}, ?{m}{m, n}?