정규표현식(regular expression)은 일정한 패턴을 가진 문자열을 표현하는 방법으로 특정한 규칙으로 된 문자열을 추출하거나 바꿀 때 사용한다. 문자열이 정해진 규칙에 맞는지 판단할 때도 사용한다.
. ^ $ * + ? { } [ ] \ | ( )
[]
로 만들어진 정규식은 [] 사이 문자들과 매치
라는 의미를 갖는다.-
를 사용하면 두 문자 사이의 범위를 위미한다.[a-zA-Z]
[0-9]
^
를 주의하자 문자 클래스 안에 사용할 경우 not
이라는 의미를 갖는다.[^0-9]
숫자가 아닌 문자를 매치한다.# 정규표현식의 별도 표기법
\d == [0-9] # 숫자와 매치
\D == [^0-9] # 대문자로 사용된 것은 소문자의 반대
\s == [ \t\n\r\f\v] # 공백 문자와 매치, 맨 앞의 빈칸은 space를 의미
\S == [^ \t\n\r\f\v]
\w == [a-zA-Z0-9] # 문자+숫자와 매치
\W == [^a-zA-Z0-9]
.
메타 문자는 줄바꿈 문자인 \n
을 제외한 모든 문자와 매치된다.a.b
"a+모든 문자+b", "a"와 "b" 사이에 "어떤 문자"라도 있어야 매치된다.a[.]b
"a.b", 문자 클래스([])내에 Dot(.) 메타 문자가 사용된다면 문자 그대로를 의미한다.re.DOTALL
옵션을 사용하면 \n
문자와도 매치된다.*
ca*t
"ct","caaat" 모두 "a"가 0번, 3번 반복되어 매치+
ca*t
"ct", "a"가 0번 반복되어 매치되지 않는다.{}
메타 문자를 사용하면 반복 횟수를 지정할 수 있다.{m,n}
바로 앞에 있는 문자 반복 횟수 m부터 n까지{3,}
반복 횟수 3 이상 {,3}
3 이하 {3}
반드시 3번 반복?
반복은 아니지만 {0,1}
과 동일한 의미를 가진다.ca?t
"c+a(있어도 되고 없어도 되고)+t", "a"가 있거나 없거나 둘다 매치된다.