점(.) 및 백슬래시(\)

일부 문자는 정규 표현식에서 사용할 때의 의미와, 기타 다른 맥락에서 사용할 때의 의미가 완전히 다릅니다. 점(.)을 예로 들자면, 정규 표현식에서는 모든 문자와 일치함을 나타내는 특수 문자지만 일반 문서에서는 마침표(.)로 사용되어 문장이 끝난다는 것을 나타냅니다. 또한 수학에서는 정수와 소수 부분을 구분하는 소수점(.)으로 사용됩니다.

정규 표현식에서는 먼저 정규 표현식의 맥락에서 특수 문자를 평가합니다. 즉, 점이 있으면 어떤 한 문자에 일치하는 것으로 인식합니다.

예를 들어 정규 표현식 1.은 다음과 일치합니다.

  • 11
  • 1A

정규 표현식 1.1은 다음과 일치합니다.

  • 111
  • 1A1

IP 주소를 정규 표현식으로 제공하면 의외의 결과를 얻게 됩니다. 예를 들어 정규 표현식 0.0.0.0은 다음과 일치합니다.

  • 0102030
  • 0a0b0c0

점을 모든 다른 문자와 일치하는 데 사용되는 특수 문자가 아니라 IP 주소의 각 부분을 구분하기 위한 원래의 의미로 정규 표현식에 표시되도록 하려면 이를 적용하기 위한 신호를 입력해야 합니다. 그 신호가 바로 백슬래시(\)입니다. 정규 표현식에 백슬래시가 표시되면 그 다음 문자를 문자 그대로 해석해야 한다는 것을 의미합니다. 따라서 IP 주소 0.0.0.0과 일치하는 정규 표현식은 다음과 같습니다.

0\.0\.0\.0

백슬래시를 사용하여 특수 문자를 이스케이프 처리하고 문자 그대로 해석합니다. 예를 들면 다음과 같습니다.

  • \\(백슬래시를 이스케이프 처리)
  • \[(대괄호를 이스케이프 처리)
  • \{(중괄호를 이스케이프 처리)
  • \.(점을 이스케이프 처리)
도움이 되었나요?
어떻게 하면 개선할 수 있을까요?