정규 표현식

위키백과 ― 우리 모두의 백과사전.

정규 표현식은 문자열 간의 관계를 나타내는 규칙을 표현하는 방식으로, 특정한 규칙을 가진 문자열을 검색하거나 변환할 때에 자주 사용된다.

[편집] 문법

몇몇 문자는 특정한 논리적 관계를 나타내는 기호로 쓰인다. 이를 제외한 나머지 문자는 일반적인 문자를 나타낸다.

  • 선택 기호: "|" 기호는 여러 식 중에서 하나를 선택한다. 예를 들어, "abc|adc"는 abc라는 문자열과 adc라는 문자열을 모두 포함한다.
  • 묶기 기호: "("와 ")"로 여러 식을 하나로 묶을 수 있다. "abc|adc"와 "a(b|d)c"는 같은 의미를 가진다.
  • 갯수 기호: 문자 뒤에 붙어 문자의 갯수를 나타낸다.
    • "*" : 0개 이상. "a*b"는 "ab", "aab", "aaab", "b"를 포함한다.
    • "+" : 1개 이상. "a+b"는 "ab", "aab", "aaab"를 포함하지만 "b"는 포함하지 않는다.
    • "?" : 0개 또는 1개. "a?b"는 "ab", "b"만을 포함한다.

이에 따라 "(fa|mo|br?o)ther"는 "father", "mother", "brother", "bother"를 나타낸다.

많은 프로그래밍 언어에서는 이를 확장한 문법을 가지고 있다. 이 중 일반적으로 사용되는 연산자는 다음과 같다.

  • "[]" : "["과 "]" 사이의 문자 중 하나를 선택한다. "|"를 여러 개 쓴 것과 같은 의미를 가진다. 예를 들면 [abc]d는 ad, bd, cd를 뜻한다. 또한, "-" 기호와 함께 쓰면 문자의 범위를 지정할 수 있다. "[a-z]"는 a부터 z까지 중 하나, "[1-9]"는 1부터 9까지 중의 하나를 뜻한다.
  • "[^]" : "[^"과 "]" 사이의 문자를 제외한 나머지 하나를 선택한다. 예를 들면 [^abc]d는 ad, bd, cd는 포함하지 않고 ed, fd 등을 포함한다. [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 나타낸다.
  • "^", "$" : 각각 문자열의 처음과 끝을 나타낸다.

[편집] 바깥 고리