이전에 포스팅에 이어서 정규식에 대해서 적어보고자 한다.
정규식은 언어와 상관없이 Pattern을 파악하는데 굉장히 도움이 되므로 누구나 참고해도 좋을 것이다. 이전 포스팅은 아래 링크에 달아 놓는다.
정규 표현식에서 사용하는 메타 문자는 특별한 용도로 사용되는 문자를 말한다. 종류는 아래와 같다.
. ^ $ * ? { } [ ] \ | ( )
이미 regex_1 포스팅에서 위 문자의 역할은 설명했기에 넘어가겠다.
이전 포스팅에서 설명한 Character class 메타문자이다. 의미는 [ ] 사이의 문자들과 매치
이다. 가장 도움이 되는? 클래스라고 생각한다.
예제를 통해서 설명해보겠다.
String answer = "asdfqwer1234"
answer.replaceAll("[^a-zA-Z]", "");
System.out.println(answer);
// 결과 : asdfqwer
정규 표현식의 Dot은 줄바꿈 문자(\n) 을 제외한 모든 문자와 매치됨
이번에도 예제를 통해서 설명해보겠다.
1. a.b : a_b를 의미한다
2. a[.]b : a.b 를 의미한다. Character class로 대괄호가 사용됨을 잊으면 안됨
*
의 경우 무한히 반복됨을 의미한다. Zero or Inf 의 뜻으로 없어도 된다.
+
의 경우 one or Inf 의 뜻으로 이해하면 좋다.
{ } 메타 문자를 사용하면 반복 횟수를 설정할 수 있다. {m, n} 정규식을 사용하면 반복 횟수가 m부터 n까지 매치할 수 있다. 또한 m 또는 n을 생략할 수도 있다. 만약 {3,}처럼 사용하면 반복 횟수가 3 이상인 경우이고 {,3}처럼 사용하면 반복 횟수가 3 이하를 의미한다. 생략된 m은 0과 동일하며, 생략된 n은 무한대(2억 개 미만)의 의미를 갖는다. 참고로 ? 는 {0, 1} 을 의미한다.