Scanner을 사용하여 단어 경계에서 문자열을 분할하고 싶습니다. 일반적으로,이는 다음과 같이 할 것입니다 : [a-zA-Z0-9#/]
: 나는 좀 더 문자를 포함하고 _
을 제외 할로Look-Ahead 및 Look-Behind를 사용하여 사용자 지정 경계 일치자를 만드는 방법은 무엇입니까?
Scanner scanner = new Scanner(...).useDelimiter("\\b");
문제는 "단어"문자의 나의 정의는 표준 [a-zA-Z_0-9]
에서 작은 조금 다른 점이다 . 따라서 \b
패턴을 사용할 수 없습니다.
(<?=[A-Za-z0-9#/])(?![A-Za-z0-9#/])|(<?![A-Za-z0-9#/])(?=[A-Za-z0-9#/])
스캐너는이를 사용하여 어디서든 분할하지 않습니다.
미리보기와 뒤 비켜보기를 사용하여이를 수행 할 수 있습니까?
그냥 사소한 점,하지만'\의 b'의 당신의 "표준"정의는 잘못된 것입니다. –
나는 하나주지 않았지만'(? <= \ w) (?! \ w) | (? rolve
Java 7과 그 새로운 [UNICODE_CHARACTER_CLASS] (http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern)를 사용하는 경우 이것이 어떻게 * 가정 된 * 것인지를 정의합니다. html # UNICODE_CHARACTER_CLASS) 모드입니다. 하지만 자바의 유산 '\ b'는 좀 더 창의적입니다. 자세한 내용은 [이 질문] (http://stackoverflow.com/q/4304928/20938)을 참조하십시오. 특히 @ tchrist의 대답. –