Regex 정규표현식
[] #
[ ] 사이의 문자들과 매치` 라는 의미를 가지며, [ ]사이에는 어떤 문자도 들어갈 수 있다.
[abc]
라는 표현식은"a, b, c중 한 개의 문자와 매치"
를 의미한다.[abc] == a?+b?+c?
"a"
는 정규식에a
가 있으므로 매치"before”
는b
가 있으므로 매치"dude"
는a, b, c
중 어느 하나라도 포함하고 있지 않으므로 매치되지 않는다.
- #
하이픈(-
)은 두 문자 사이의 범위를 의미한다.
[a-zA-Z] == a~z && A~Z
모든 알파벳을 매치[0-9] == 0~9
모든 숫자를 매치
^ #
캐럿(^
)은 반대를 의미한다.
[^0-9] == !(0~9)
를 의미하는 것으로 숫자가 아닌 문자만 매치
\ #
역슬래시(\
)는 정규식 상에 특별한 의미가 있는 문자들을 문자그대로 사용할때 사용한다.
[0-9]
또는 [a-zA-Z]
와 같은 정규표현식은 \역슬래시를 이용해 간단하게 표현 할 수 있다.
대문자는 소문자의 반대^ 를 의미한다.
\d == [0-9]
숫자를 매치\D == [^0-9]
와 동일한 표현으로 숫자가 아닌것을 매치\s == [ \t\n\r\f\v]
와 동일한 표현으로 공백을 매치[ \t\n\r\f\v]
에서 맨 앞의 빈 칸은 공백문자(space)를 의미한다.\S == [^ \t\n\r\f\v]
와 동일한 표현으로 공백이 아닌 것을 매치\w == [a-zA-Z0-9_]
와 동일한 표현으로 문자,숫자를 매치\W == [^a-zA-Z0-9_]
와 동일한 표현으로 문자,숫자가 아닌것을 매치
. #
Dot(.
)은 개행기호인 \n을 제외한 모든 문자를 매치할 때 사용한다.
a.b == a+모든문자+b와 매치
aab
a0b
는 매치되며abc
는 매치되지 않는다.
a[.]b == a+.+b와 매치
[.]
은.
이라는 문자 자체로 인식한다.a.b
는 매치되지만a0b
는 매치되지 않는다.
* + ? #
반복을 표현하는 메타문자이다.
*
은*
의 바로 앞의 문자가 0부터 무한대로 반복 될 수 있음을 의미한다. оab*c == a+b(0회 이상 반복)+c
。ac
,abc
,abbbbbbc
이 매치된다.+
은+
바로 앞의 문자가 최소 1번 이상 반복함을 의미한다. оca+t == c+a(1회 이상 반복)+t
。abc
,abbbbbbc
는 매치되지만ac
는 매치되지 않는다.{}
는 원하는 반복 횟수를 지정할 때 사용한다.{m}
반드시 m번 반복ab{2}c == a+b(2번 반복)+c
abbc
는 매치되지만ac
,abc
,abbbbbbc
는 매치되지 않는다
{m, n}
m~n회 반복ab{2,5}c == a+b(2~5번 반복)+c
abbc
는 매치되지만ac
,abc
,abbbbbbc
는 매치되지 않는다
{m,}
m회 이상 반복 /{,n}
n회 이하 반복ab{2,}c == a+b(2~번 이상 반복)+c
abbc
,abbbbbbc
는 매치되지만ac
,abc
는 매치되지 않는다
ab{,5}c == a+b(~5번 이하 반복)+c
ac
,abc
,abbc
는 매치되지만abbbbbbc
는 매치되지 않는다
?
는 {0,1}과 동일한 표현으로 ?앞의 문자가 있거나 없거나 매치된다.ab?c == a+b(없을 수 있음)+c
ac
,abc
는 매치되지만abbbbc
는 매치되지 않는다.