안녕하세요.
오늘은 자바 문법 에러인 Unmatched closing ')' 내용에 대해 알아보고 해결 원인과 해결 방안을 정리해 보려고 합니다. 해당 문법 에러는 split을 사용하다 보면 발생할 수 있는 에러입니다. 그럼 에러가 발생할 수 있는 예제 소스 코드를 보면서 보도록 하겠습니다.
에러 내용
1. Unmatched closing ')'
package com.demo.system;
import java.util.Arrays;
import java.util.stream.Collectors;
public class TestMain {
public static void main(String[] args) {
splitTest("abcsefg", ")");
}
/**
* split을 이용한 정규식 문자 테스트 method
*/
public static void splitTest (String originData, String regex) {
System.out.println("---------------------------------------------");
System.out.println("* 원본 데이터 : " + originData);
System.out.println("* 정규식 문자 : " + regex);
System.out.println("---------------------------------------------");
String regexData = Arrays.stream(originData.split("")).collect(Collectors.joining(regex));
System.out.println("* 원본 + 정규식 데이터 : " + regexData);
System.out.println("---------------------------------------------");
String [] arr = regexData.split(regex);
int arrLength = arr.length;
System.out.println("* split size : " + arrLength);
System.out.println("---------------------------------------------");
for (int i = 0; i < arrLength; i++) {
System.out.println(arr[i]);
}
}
}
split을 이용하여 테스트할 수 있도록 메서드를 만들어 줬습니다.
- 인자값 1 : split 대상 문자열
- 인자값 2 : split 구분값 (위의 메서드에서는 인자값1과 join 처리를 하고 나서 split 처리를 하기 위한 용도)
테스트로는 인자값1에 "abcdefg", 인자값 2에 ")" 값을 넣고 메서드를 호출하였습니다.
- "a)b)c)d)e)f)g"
에러 발생 실행 결과
실행 결과는 위와 같이 에러가 발생하였습니다. split에 ")"만 넣고 실행을 하게 되면 ")"는 정규식 예약 문자이기 때문에 split에서 인식할 때에는 일반 문자가 아닌 정규식 문자로 처리가 되게 됩니다.
")" 정규식 문자로 사용할 때에는 앞에 "(" 문자를 같이 사용해 줘야 합니다. 하지만 앞에 "("를 사용하지 않고 정규식을 일반 문자로 처리하지 않았기 때문에 위와 같은 에러가 발생을 했습니다. 그럼 "(" 문자를 일반 문자로 split 될 수 있도록 처리해 보겠습니다.
"\\"를 추가하여 일반 문자로 split 처리
먼저 소스 코드에서 split을 하는 부분에 "\\"를 추가해 줬습니다.
String [] arr = regexData.split("\\" + regex);
위의 코드는 실제 "\\)" 이렇게 세팅이 됩니다. 그럼 수정된 소스 코드의 실행 결과를 확인해 보겠습니다.
정규식 문자를 일반 문자로 처리를 해주고 난 후 정상적으로 split이 된 결과 화면입니다.
마무리
에러 원인
정규식 문자 ")"는 정규식으로 인식할 때 앞에 "("를 같이 사용해야 하는데 ")"만 사용했을 경우 Unmatched closing ')' 에러 발생
해결 방안
split("\\)");
그럼 오늘도 저의 작고 소중한 글을 읽어주셔서 감사합니다.

'Java > Java' 카테고리의 다른 글
[java] 자바 split(".") 검색하는 방법과 주의사항 알아보기 (0) | 2023.01.19 |
---|---|
[java] 자바 문법 에러 'Dangling meta character '' near index 0' 해결하기 (split 에러 이슈) (0) | 2023.01.18 |
[java] 자바 문법 에러 Illegal repetition 해결하기 (split 에러) (0) | 2023.01.15 |
[java] 자바 문법 에러 Unclosed character class near index 0 해결하기 (split 에러 처리) (0) | 2023.01.14 |
[java] 자바 문법 에러 Unexpected internal error near index 1 해결하기 (split 에러) (0) | 2023.01.13 |