정규식 String 구성에서 이스케이프 문자 \s 사용에 대한 문의
- 작성자 :
- 최*민
- 작성일 :
- 2024-01-31 17:58:31
- 조회수 :
- 532
- 구분 :
- 개발환경 / 3.10
- 진행상태 :
- 완료
Q
수고많으십니다.
정규식 관련으로 개발 진행중 이스케이프 문자 \s(공백)에 대해 3.10버전과 그외 4.1(3.9 등)버전에서 컴파일이 상이하여 문의를 남기게 되었습니다.
첨부된 이미지에서처럼 3.10버전에서는 문자열에 \s를 입력하여도 오류없이 컴파일이 되었지만
그외의 버전인 4.1이나 3.9에서는 \\s로 작성하지 않으면 컴파일 오류가 발생합니다.
오류 내용은 다음과 같이 표시됩니다.
예시) String reg = ".*eval\s*\\(";
오류) invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
보통 대부분 문서나 블로그에서도 위의 valid 이스케이프문자 외에는 \\s로 작성해야 한다고 되어있던데 3.10에서는 \s 작성이 가능하여
혹시 이에 대한 이유를 알 수 있을까 싶어 문의를 남깁니다.
정규식 관련으로 개발 진행중 이스케이프 문자 \s(공백)에 대해 3.10버전과 그외 4.1(3.9 등)버전에서 컴파일이 상이하여 문의를 남기게 되었습니다.
첨부된 이미지에서처럼 3.10버전에서는 문자열에 \s를 입력하여도 오류없이 컴파일이 되었지만
그외의 버전인 4.1이나 3.9에서는 \\s로 작성하지 않으면 컴파일 오류가 발생합니다.
오류 내용은 다음과 같이 표시됩니다.
예시) String reg = ".*eval\s*\\(";
오류) invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
보통 대부분 문서나 블로그에서도 위의 valid 이스케이프문자 외에는 \\s로 작성해야 한다고 되어있던데 3.10에서는 \s 작성이 가능하여
혹시 이에 대한 이유를 알 수 있을까 싶어 문의를 남깁니다.
환경정보
-
- OS 정보 : windows10
- 표준프레임워크 버전 : 3.10, 그외
- JDK(JRE) 정보 : jdk1.8이상
- WAS 정보 : tomcat
- DB 정보 : oracle 및 기타
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터입니다.
질문하신 내용에 대해 표준프레임워크 개발환경별로
동일한 현상이 있음을 확인했습니다.
Java Compiler 레벨에서 \s는 허용되지 않고 있고
메시지에 안내되어 있는대로 다음문자만 허용하므로
오류) invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
오류가 나는 것이 맞습니다.
다만, 개발환경 v3.10에서는 \s => " "으로 자동으로 처리되고 있는데
이에대해서는 확인중에 있습니다.
정규식에서 공백문자를 구분하는 \s 대신에
\\s 형식이나 유니코드(\u0020)로 바꿔서 구성하시기 바랍니다.
감사합니다.
표준프레임워크센터입니다.
질문하신 내용에 대해 표준프레임워크 개발환경별로
동일한 현상이 있음을 확인했습니다.
Java Compiler 레벨에서 \s는 허용되지 않고 있고
메시지에 안내되어 있는대로 다음문자만 허용하므로
오류) invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
오류가 나는 것이 맞습니다.
다만, 개발환경 v3.10에서는 \s => " "으로 자동으로 처리되고 있는데
이에대해서는 확인중에 있습니다.
정규식에서 공백문자를 구분하는 \s 대신에
\\s 형식이나 유니코드(\u0020)로 바꿔서 구성하시기 바랍니다.
감사합니다.