본문 바로가기

Java

정규 표현식

1) 정규 표현식이란?

- 정규 표현식은 문자열을 조작하거나 검사하는데 편리한 도구입니다. 

  정규 표현식의 도움 없이 복잡한 관련 작업을 수행하려면 많은 양의 코드가 필요합니다. 

 

2) 정규 표현식의 3대 기본 연산

(1) 접합

- '접합'은 연속으로 나오는 것을 하나로 모아서 검색하는 기능입니다. 

  정규식의 최소 단위는 문자인데, 이 문자를 접합하여 단어를 검색할 수 있습니다.

// ABC라는 문자열을 찾는 정규식
/ABC/

(2) 검색

- 접합과 달리 여러 개 중 하나만 찾아 선택하는 것을 '검색'이라고 합니다.  

   | 연산자는 선택을 나타내고, 여러 대안 중 왼쪽부터 차례로 찾아가며

  처음으로 일치하는 것을 찾습니다.  

// ABC 중에 하나만 찾는 것
/A|B|C/

(3) 반복

- '반복'은 접합을 통해 표현할 수 있는 것을, 간편하게 사용하기 위한 기능입니다.

  반복은 범위나 무한대 같은 것을 손쉽게 표현할 수 있으므로 유용하고,

  전체적으로 정규식의 길이를 줄여줍니다. 

// 반복 사용
/A{3}/

 

3) 3대 기본 연산의 우선 순위

(1) 접합과 선택

- 예를 들어, ABC 또는 DEF를 찾는 정규식은 다음과 같이 표현할 수 있습니다. 

/ABC|DEF/

- 이를 자세히 살펴보면, ABC, DEF는 각각 접합을 통해 만들어진 식이고,

  이 두 개의 접합식을 |를 통해 선택을 적용한 것입니다. 

 

- 여기서 3개의 기본 연산사이에는 우선 순위가 존재하는데,

  접합 연산은 선택 연산보다 우선 순위가 높아서,

  우선 접합 연산이 계산 되고, 그 다음에 선택 연산이 계산됩니다. 

 

(2) 접합과 반복

- 다음과 같은 정규식이 있다고 가정합시다.

/AB{3}/

- 접합과 반복 사이에는 반복이 더 우선순위가 높습니다.

  따라서 위의 식은 ABBB로 해석됩니다.

 

(3) 결론

- 따라서 접합과 선택, 반복은 다음과 같은 우선순위를 갖고 있습니다.

반복 >> 접합 >> 선택

 ex) BAAA 또는 ABBB를 찾는 정규식

/BA{3}|AB{3}/

 

4) 그룹

- 그룹은 () 괄호로 표현하는데, 일반적인 산술연산처럼 모든 연산자 우선순위를 이겨

  먼저 실행됩니다. 

 

ex) ABC, BBC, CBC 중 하나를 찾는 정규식

/(A|B|C)BC/

- 즉, 괄호 부분을 하나의 문자로 보면 (...), B, C라는 세 개의 문자를 접합한 것입니다. 

 

 

 

참고

코드스피츠 정규표현식(https://www.bsidesoft.com/8232

'Java' 카테고리의 다른 글

서비스 제공자 프레임워크  (0) 2022.08.26
생성자 대신 정적 팩토리 메서드  (0) 2022.08.25
String, StringBuffer, StringBuilder 클래스  (0) 2022.08.17
리플렉션  (0) 2022.08.17
자바 가비지 컬렉션(1)  (0) 2022.08.11