내가하는 프로젝트에서 String을 읽어야합니다. 이 문자열에는 유니 코드 문자에 대한 하나 이상의 16 진수 표현이 포함될 수 있습니다 (예 : "š"의 경우 "\ u0161"). 이 코드를 올바른 문자 표현으로 변환하고 싶습니다.정규 표현식의 첫 문자가 다른 문자와 잘 작동하면 오류가 발생합니다.
이렇게하려면 내가 먼저 내 문자열의 형식 "\ uAAAA"의 진수 순서가 있음을 감지해야하고, 그 때문에 나는 다음과 같은 정규 표현식 썼다 :
Pattern classPattern = Pattern.compile("\\u[0-9a-fA-F]{4}");
Matcher classMatcher = classPattern.matcher("\\u1ECD");
System.out.println(classMatcher.find());
불행하게도 이것은 생성을 "java.util.regex.PatternSyntaxException : 색인 2 근처에 잘못된 유니 코드 이스케이프 문자열이 있습니다."오류가 발생합니다. 이것은 내가 다시 뭔가 잘못하고있는 중이 야 믿고 날 리드
Pattern classPattern = Pattern.compile("@u[0-9a-fA-F]{4}");
Matcher classMatcher = classPattern.matcher("@u1ECD");
System.out.println(classMatcher.find());
: 내가 "@"로 단지 테스트 목적으로 "\"를 대체하는 경우
그러나, 정규식은 예상대로 작동 삭감. 다른 시퀀스도 많이 시도했지만 그 중 아무 것도 작동하지 않았습니다. 도와주세요.
이 작품! 감사! – jerraes
다음과 같은 'u'또는 '\ u'와는 아무런 관련이 없습니다. 리터럴 백 슬래시를 정규 표현식으로 코딩하려면 백 슬래시가 두 번 이스케이프 처리되므로 Java 리터럴 문자열에 4 개의 백 슬래시가 필요합니다. 정규식. – Bohemian
이것은 실제로 잘못된 이유로 올바른 것을 추천 한 예입니다. – Ingo