기타

정규 표현식 (Regular Expressions)

비번변경 2022. 8. 25. 16:53

정규 표현식

Regular Expressions. 정규식이라고도 말한다.

복잡한 문자열을 처리할 때 사용하는 기법으로 문자열을 처리하는 모든 곳에서 사용한다.

정규 표현식을 사용하면 주민등록번호, 전화번호, 이메일 등 일정한 패턴을 가진 문자열을 보다 쉽게 다룰 수 있다.

정규 표현식에서는 아래의 메타 문자를 사용하는데,

. ^ $ * + ? { } [ ] \ | ( )

이 글에서는 각 메타 문자의 의미를 정리할 것이다.

 

 

[ ] 문자 클래스

[ ] 사이의 문자들 중 하나를 찾는다.

예로 들어 [abc]의 경우 a, b, c 중 한 개의 문자를 찾겠다는 의미다.

 

[ ] 내에 -를 사용하면 두 문자 사이의 범위를 의미한다.

  • [a-c] : [abc]와 같다.
  • [0-5] : [012345]와 같다.
  • [a-zA-Z] : 알파벳 모두에 해당한다.
  • [0-9] : 숫자에 해당한다.

 

[ ] 내에는 어떤 문자 또는 메타 문자가 들어올 수 있지만 ^를 사용하는 경우에는 not을 의미하기 때문에 주의해야 한다.

숫자나 영어, 공백과 같이 자주 사용하는 문자 클래스는 별도의 표기법으로도 표기할 수 있다.

표기 의미 문자 클래스
\d 숫자 [0-9]
\D 숫자가 아닌 것 [^0-9]
\s whitespace [ \t\n\r\f\v]
\S whitespace가 아닌 것 [^ \t\n\r\f\v]
\w 문자와 숫자 [a-zA-Z0-9_]
\W 문자 또는 숫자가 아닌 것 [^a-zA-Z0-9_]

 

. 모든 문자

. 은 줄 바꿈 문자 \n을 제외만 모든 문자를 찾는다.

a.b

a + 모든 문자 + b에 해당한다. aab, a0b는 패턴을 만족하지만, abc는 만족하지 않는다.

모든 문자

 

a[.]b

a + . + b에 해당한다. a.b는 만족하지만, a0b 등의 문자열은 만족하지 않는다. [ ] 내의 .은 모든 문자를 의미하는 메타 문자로서의 기능을 상실하고 . 문자 그대로를 의미한다.

[] 내의 .

 

 

* 반복

*는 * 바로 앞에 있는 문자가 0번부터 무한대로 반복될 수 있다는 의미이다.

ca*t

위의 정규식은 ct, cat, caat와 같은 문자열에 해당된다.

*의 경우

 

 

+ 반복

+는 + 바로 앞에 있는 문자가 1번부터 무한대로 반복될 수 있다는 의미다.

ca+t

위의 정규식은 cat, caat와 같은 문자열을 만족하지만 ct은 만족하지 않는다.

+의 경우

 

 

{m,n} 반복

문자의 반복 횟수를 m번 이상 n번 이하로 제한한다는 의미이다. m 또는 n는 생략할 수 있다.

  • {m,n} : m번 이상 n번 이하
ca{2,5}t

{m,n}

참고로 ,와 n 사이에 공백이 있으면 안 된다.

  • {m,} : m번 이상. {1,}은 +와 같고, {0,}은 *와 같다.
ca{2,}t

{m,}

  • {,n} : n번 이하
ca{,5}t

{,n}

  • {m} : m번 반복
ca{2}t

{m}

 

 

?

?는 {0,1}을 의미한다. 즉 ? 앞의 문자가 있거나 없어도 된다는 의미다.

ab?c

는 abc, ac를 둘 다 만족한다.

?

 

 

참고 문서

https://wikidocs.net/4308