Javascript - DeepDive(13) : regex_2

­이승환·2021년 10월 10일
0

Javascript DeepDive

목록 보기
12/13

regex


이전에 포스팅에 이어서 정규식에 대해서 적어보고자 한다.
정규식은 언어와 상관없이 Pattern을 파악하는데 굉장히 도움이 되므로 누구나 참고해도 좋을 것이다. 이전 포스팅은 아래 링크에 달아 놓는다.

regex_1

메타문자

정규 표현식에서 사용하는 메타 문자는 특별한 용도로 사용되는 문자를 말한다. 종류는 아래와 같다.

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

이미 regex_1 포스팅에서 위 문자의 역할은 설명했기에 넘어가겠다.

문자 클래스 []

이전 포스팅에서 설명한 Character class 메타문자이다. 의미는 [ ] 사이의 문자들과 매치 이다. 가장 도움이 되는? 클래스라고 생각한다.

예제를 통해서 설명해보겠다.

  1. [abc] : a, b, c 중 한개의 문자와 매치되는 경우
  2. [a-zA-Z] : a~z, A~Z 범위의 문자와 매치되는 경우 ( - 는 범위를 뜻함)
  3. [0-9] : 0~9 사이의 문자와 매치되는 경우
  4. [^0-9] : 0~9 사이의 문자와 매치되지 않는 경우를 뜻함
  5. \d : [0-9] 와 동일
  6. \D : [^0-9] 와 동일
  7. \s : [ \t\n\t\f\v] 와 동일, 맨앞에 스페이스바 간격이 존재하는것 유의
  8. \S : [^ \t\n\t\f\v] 와 동일
  9. \w : [a-zA-Z0-9] 와 동일
  10. \W : [^a-zA-Z0-9] 와 동일
    자바에서 활용하면 아래와 같이 사용할 수 있다.
String answer = "asdfqwer1234"
answer.replaceAll("[^a-zA-Z]", "");
System.out.println(answer);
// 결과 : asdfqwer

Dot "."

정규 표현식의 Dot은 줄바꿈 문자(\n) 을 제외한 모든 문자와 매치됨
이번에도 예제를 통해서 설명해보겠다.
1. a.b : a_b를 의미한다
2. a[.]b : a.b 를 의미한다. Character class로 대괄호가 사용됨을 잊으면 안됨

Iterate "*"

* 의 경우 무한히 반복됨을 의미한다. Zero or Inf 의 뜻으로 없어도 된다.

  1. ca*t : c()t 로 괄호안에 a가 여러개가 들어갈 수 있다.

Iterate "+"

+ 의 경우 one or Inf 의 뜻으로 이해하면 좋다.

Iterate {{m,n}, ?}

{ } 메타 문자를 사용하면 반복 횟수를 설정할 수 있다. {m, n} 정규식을 사용하면 반복 횟수가 m부터 n까지 매치할 수 있다. 또한 m 또는 n을 생략할 수도 있다. 만약 {3,}처럼 사용하면 반복 횟수가 3 이상인 경우이고 {,3}처럼 사용하면 반복 횟수가 3 이하를 의미한다. 생략된 m은 0과 동일하며, 생략된 n은 무한대(2억 개 미만)의 의미를 갖는다. 참고로 ? 는 {0, 1} 을 의미한다.

profile
Mechanical & Computer Science

0개의 댓글