반응형
String.replaceAll ()이 Java 8에서 Java 9와 다르게 작동하는 이유는 무엇입니까?
이유는 무엇입니까이 코드 출력 02
에서 자바-8 만 o2
에서 자바-9 이상?
"o2".replaceAll("([oO])([^[0-9-]])", "0$2")
대부분의 경우 JDK-6609854 및 JDK-8189343 으로 인해 네거티브 중첩 문자 클래스 처리를보고했습니다 (예 :)[^[0-9-]]
. 이 동작은 9와 10에서 수정되었지만 수정은 8로 백 포트되지 않았습니다. Java 8의 버그는 다음과 같이 설명됩니다.
Java에서 부정은 중첩 된 항목에 적용 되지 않습니다.
[brackets]
따라서
[^c]
예상 한대로 "c"와 일치하지 않습니다.
[^[c]]
"c"와 일치합니다. 내가 기대하는 것이 아닙니다.
[[^c]]
"c"와 일치하지 않음범위 또는 속성 식의 경우에도 마찬가지입니다. 대괄호 안에있는 경우 out 수준의 부정은 영향을주지 않습니다.
[^a-z]
반대이다[^[a-z]]
반응형
'Development Tip' 카테고리의 다른 글
.pem 파일을 읽고 개인 및 공개 키를 얻는 방법 (0) | 2020.11.28 |
---|---|
Heroku에 로컬 MySQL 데이터베이스를 배포하는 방법 (0) | 2020.11.28 |
ASP.NET Web Garden-얼마나 많은 작업자 프로세스가 필요합니까? (0) | 2020.11.28 |
PHP 연관 배열이 정렬되어 있습니까? (0) | 2020.11.28 |
함수의 모든 인수를 다른 함수에 전달 (0) | 2020.11.28 |