2012-01-08 2 views
4

Java Regexp에서 \b (단어의 마지막 문자를 의미)을 시도했지만 작동하지 않습니다.Java Regex 관련 문제

String input = "aaa aaa"; 
Pattern pattern = Pattern.compile("(a\b)"); 
Matcher matcher = pattern.matcher(input); 

while (matcher.find()) { 
    System.out.println("Found this wiki word: " + matcher.group()); 
} 

문제점 :

+2

참고 : '\ b'는 "단어의 마지막 문자"가 아니라 "단어와 단어가 아닌 단어의 경계"를 의미합니다. – Howard

+0

정규식을 수정 (''a \\ b "'및'\ b'에 대한 다른 설명을 보더라도)하고 싶은지 확실하지 않습니다. 그룹은 항상'a' 만 포함합니다. 그래서, 당신이하고 싶은 것은 무엇입니까? – fge

답변

15

Java에서 "\b"은 백 스페이스 문자 (char 0x08)이며, 정규식에서 사용될 때 백 스페이스 리터럴과 일치합니다.

당신은 자바에서이처럼 느끼고 슬래시를 이스케이프 코딩 정규식 a\b, 원한다, 당신은 단지 정규식 \b의 의미에 대한 부분적으로 올바른 BTW

"a\\b" 

를 - 실제로 "을 의미 단어 경계 "(단어의 시작 또는 끝).

+1

* JDK 7을 사용하지 않는 한 ASCII가 아닌 단어에서는'\ b'가 예상치 못한 부분 ('|':'Ü | bertr | ä | ger |'로 표시)에서 일치하지 않을 수 있습니다. –

3

자바 문자열에서 리터럴 백 슬래시는 이스케이프 처리해야하므로 정규 표현식 \b은 자바 문자열로 "\\b"이됩니다.

+0

'정규식'이 아닙니다. – Lion

+0

어 ... 뭐라고 요? 정규 표현식 = 정규 표현식. – m0skit0

+0

'\\'와'\ b'는 Java에서 이스케이프 시퀀스 (문자)입니다. – Lion