[개발 일기] 2025.02.26 - Dangling quantifier '+’ 에러

2025. 2. 26. 12:29·개발 일기

💡 개요

오늘은 알고리즘을 풀 때 split() 메서드를 사용하다가 마주친 Dangling quantifier '+’ 에러에 대해 정리해 보자.

 

 

 

📕 Dangling quantifier '+’

Dangling quantifier '+’ 에러를 마주치는 상황은 다음과 같다.

 

 

String s = "10+10+10";

String[] arr = s.split("+"); // 에러 발생

 

 

split() 메서드의 입력 매개변수는 정규 표현식으로 해석된다.

 

 

정규 표현식 내에서 “+” 는 직전 문자가 하나 이상 반복될 때 사용하는 수량자(quantifier)를 의미하기 때문에, “+”를 정규 표현식에서 단독으로 사용할 경우 에러가 발생한다.

 

 

즉, 난 String s 를 “+” 을 기준으로 문자열을 분리하려고 했지만, split() 메서드는 없거나 하나 이상 반복되는 문자를 찾으려고 하기 때문에 에러가 발생하는 것이다.

 

 

그렇기 때문에 정규 표현식에서 확실하게 나누고자 하는 기준의 문자를 입력하고자 한다면 문자 앞에 이스케이프(”\\”) 를 추가해야 한다.

 

 

String s = "10+10+10";

String[] arr = s.split("\\\\+"); // 정상적으로 동작

 

 

참고로 “+” 를 수량자로 사용하기 위해선 다음과 같이 사용해야 한다.

 

 

String text = "AAABBBCCC";

Pattern pattern = Pattern.compile("A+"); // "A"가 하나 이상 반복
Matcher matcher = pattern.matcher(text);

while (matcher.find()) {
    System.out.println("Match: " + matcher.group()); // "AAA" 출력
}

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.03.01 - Redis 직렬화  (1) 2025.03.01
[개발 일기] 2025.02.28 - @Profiles, @ActiveProfiles  (1) 2025.02.28
[개발 일기] 2025.02.25 - 전략 패턴  (0) 2025.02.25
[개발 일기] 2025.02.24 - == 연산자 vs Objects.isNull()  (0) 2025.02.24
[개발 일기] 2025.02.23 - @Builder를 사용하면 생성자가 private이라도 외부에서 접근 가능한 이유?  (0) 2025.02.23
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.03.01 - Redis 직렬화
  • [개발 일기] 2025.02.28 - @Profiles, @ActiveProfiles
  • [개발 일기] 2025.02.25 - 전략 패턴
  • [개발 일기] 2025.02.24 - == 연산자 vs Objects.isNull()
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.02.26 - Dangling quantifier '+’ 에러
상단으로

티스토리툴바