[자료구조_String] 정규표현식

gigi·2022년 8월 9일
0

정규 표현식에서 사용하는 메타 문자(meta characters)에는 다음과 같은 것이 있다.

  • 메타 문자란 원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자를 말한다.
. ^ $ * + ? { } [ ] \ | ( )

정규 표현식에 위 메타 문자를 사용하면 특별한 의미를 갖게 된다.

[ ]  

문자 클래스로 만들어진 정규식은 "[ ] 사이의 문자들과 매치"라는 의미를 갖는다.

  • 문자 클래스를 만드는 메타 문자인 [ ] 사이에는 어떤 문자도 들어갈 수 있다.

정규 표현식이 [abc] 라면 이 표현식의 의미는 "a, b, c 중 한 개의 문자와 매치"를 뜻한다.
"a", "before", "dude"가 정규식 [abc]와 어떻게 매치되는지 살펴보자.

  • "a"는 정규식과 일치하는 문자인 "a"가 있으므로 매치
  • "before"는 정규식과 일치하는 문자인 "b"가 있으므로 매치
  • "dude"는 정규식과 일치하는 문자인 a, b, c 중 어느 하나도 포함하고 있지 않으므로 매치되지 않음

[ ] 안의 두 문자 사이에 하이픈(-)을 사용하면 두 문자 사이의 범위(From - To)를 의미한다.

예를 들어 [a-c]라는 정규 표현식은 [abc]와 동일하고 [0-5]는 [012345]와 동일하다.

하이픈(-)을 사용한 문자 클래스의 사용 예

  • [a-zA-Z] : 알파벳 모두
  • [0-9] : 숫자

문자 클래스([ ]) 안에는 어떤 문자나 메타 문자도 사용할수 있지만 주의해야 할 메타 문자가 1가지 있다. 그것은 바로 ^인데, 문자 클래스 안에 ^ 메타 문자를 사용할 경우에는 반대(not)라는 의미를 갖는다. 예를 들어 [^0-9]라는 정규 표현식은 숫자가 아닌 문자만 매치된다.


()그룹
(?:)찾지만 기억하지는 않음
?없거나 있거나 (zero or one)
*없거나 있거나 많거나 (zero or more)
+하나 또는 많이 (one or more)
{n}n번 반복
{min,}최소
{min,max}최소, 그리고 최대
\b단어 경계
\B단어 경계가 아님
^문장의 시작
$문장의 끝
\ 특수 문자가 아닌 문자
.어떤 글자 (줄바꿈 문자 제외)

[0-9] 또는 [a-zA-Z] 등은 무척 자주 사용하는 정규 표현식이다. 이렇게 자주 사용하는 정규식은 별도의 표기법으로 표현할 수 있다. 다음을 기억해 두자.

\d숫자와 매치, [0-9]와 동일한 표현식이다.
\D숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다.
\swhitespace 문자와 매치, [ \t\n\r\f\v]와 동일한 표현식이다. 맨 앞의 빈 칸은 공백문자(space)를 의미한다.
\Swhitespace 문자가 아닌 것과 매치, [^ \t\n\r\f\v]와 동일한 표현식이다.
\w문자+숫자(alphanumeric)와 매치, [a-zA-Z0-9_]와 동일한 표현식이다.
\W문자+숫자(alphanumeric)가 아닌 문자와 매치, [^a-zA-Z0-9_]와 동일한 표현식이다.

대문자로 사용된 것은 소문자의 반대임을 추측할 수 있다.


// 정규표현식 사용예시
let str = 'HelloWorld'
let str2 = 'helloworld'
const upper = /[A-Z]/
console.log(upper.test(str))   // true
console.log(upper.test(str2))   // false

0개의 댓글