정규 표현식에 원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자
. ^ $ * + ? { } [ ] \ | ( )
[]
문자 클래스로 만들어진 정규식 : []
사이의 문자들과 매치된다
문자 클래스를 만드는 메타 문자인 []
사이에는 어떤 문자도 들어갈 수 있다.
[]
예시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}
?