💡 개요
오늘은 알고리즘을 풀 때 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 |