게으른 개발자의 끄적거림

(?!) 이란?

끄적잉 2024. 7. 24. 23:39
728x90

"Java (?!...)"는 정규 표현식(Regular Expression, RegEx)에서 사용되는 특수한 구문입니다. 정규 표현식은 문자열을 검색하고 조작하기 위해 사용하는 매우 강력한 도구입니다. 이제 `Java (?!...)`의 구성 요소를 하나씩 설명해 드리겠습니다.

### 1. `Java`
이 부분은 문자열 "Java"를 의미합니다. 정규 표현식에서 `Java`라는 패턴을 찾게 됩니다.

### 2. `(?!...)`
이 부분은 부정형 전방탐색(Negative Lookahead)이라고 불리는 구문입니다. 부정형 전방탐색은 특정 패턴이 뒤따르지 않는 경우에만 일치하도록 합니다. 즉, `(?!...)` 안에 있는 패턴이 "Java" 뒤에 바로 나오지 않을 때만 "Java"를 매칭합니다.

 

 


### 예제와 함께 이해하기

#### 예제 1: 단순한 예
정규 표현식: `Java(?!Script)`

이 정규 표현식은 "Java"라는 문자열 뒤에 "Script"가 오지 않는 경우에만 일치합니다.

- 일치하는 문자열:
  - "I love Java."
  - "Java is a programming language."
- 일치하지 않는 문자열:
  - "JavaScript is different from Java."
  - "I am learning JavaScript."

#### 예제 2: 문자열 검색
정규 표현식: `Java(?!Beans|FX)`

이 정규 표현식은 "Java"라는 문자열 뒤에 "Beans" 또는 "FX"가 오지 않는 경우에만 일치합니다.

- 일치하는 문자열:
  - "Java is robust."
  - "I enjoy Java programming."
- 일치하지 않는 문자열:
  - "JavaBeans is a component architecture."
  - "JavaFX is used for creating graphical user interfaces."

#### 정규 표현식의 동작 방식
1. "Java" 문자열을 찾습니다.
2. 찾은 "Java" 문자열 뒤에 `(?!...)` 안의 패턴이 존재하는지 확인합니다.
3. `(?!...)` 안의 패턴이 존재하지 않는 경우에만 "Java"를 일치시킵니다.

### 요약
- `Java`: 문자열 "Java"를 의미합니다.
- `(?!...)`: 부정형 전방탐색으로, 특정 패턴이 뒤따르지 않는 경우에만 일치시킵니다.

따라서 `Java(?!...)`는 "Java" 뒤에 특정 패턴이 오지 않는 경우에만 "Java"를 매칭하는 정규 표현식입니다. 이 구문은 복잡한 문자열 검색 조건을 정의하는 데 매우 유용합니다.

728x90