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 |