2013-07-11 6 views
1

정규 표현식에 다음과 같은 문제가 있습니다. 텍스트 (txt) 파일의 단어를 읽고 다른 파일에 쓰면서 한 줄에 한 단어 씩 작성하는 프로그램을 작성했습니다.Regex는 특수 문자를 삭제했습니다.

읽을 단어에 특수 문자 ľščťžýáíé이 있으면 예외입니다. 정규 표현식은 char을 삭제하고 특수 문자가있는 단어를 분할합니다. 예를 들어

:
입력 :

I am Jožo.

출력 대신이 정규식의

while((line = br.readLine())!= null){ 
    Pattern p = Pattern.compile("[\\w']+"); 
    Matcher m = p.matcher(line); 
} 
+0

을 사용하십시오. http://stackoverflow.com/questions/2276200/cha nging-default-encoding-of-python. ¼의 바이트 표현이 무엇인지 아십니까? – JustinDanielson

답변

5

:

여기
I 
am 
Jo 
o 

코드의 조각이다
Pattern.compile("[\\w']+") 

유니 코드 기반 : 자바에서 기본 \\w 만 ASCII 문자, 숫자 0-9 및 밑줄을 일치하기 때문에

Pattern.compile("[\\p{L}']+") 

그것은이다.

또 다른 옵션은 수정이 같이

Pattern.UNICODE_CHARACTER_CLASS 

사용하는 것입니다

:

Pattern.compile("[\\w']+", Pattern.UNICODE_CHARACTER_CLASS) 
+0

감사합니다, 작동합니다! – DRastislav

+0

환영합니다. 다행스럽게도 다행입니다. – anubhava

+1

@DRastislav 이것이 맞는 대답이라면 동의라고 표시하십시오. 012 투표를 기다리는 – aldux

-1

에게 \\에만 AZ, AZ 0-9 (영어 알파벳 플러스 숫자) 경우 일치 승 단어의 일부로 공백을 제외한 문자를 허용하려면 \\ S

관련 문제