2014-01-14 2 views
0

공백에 대한 검사 규칙을 구현할 때 토큰에 공백과 탭을 포함 할 수있는 소나 플러그인 용 파서를 작성하려고합니다. 따라서 다른 토큰에 저장하려고합니다.탭이없는 공백에 대한 RegExp

나는 tokentype 매와 공간과 탭 설정 : 탭이 공백으로 간주,

.withChannel(regexp(TokenType.TAB, "\t")) 
    .withChannel(regexp(TokenType.WHITESPACE, "\\s")) 

을 그러나뿐만 아니라, 때문에 자바에서 정규 표현식 /s 일치하는 모든 공백 문자 (공백, 탭, 라인을 토큰 휴식, 캐리지 리턴)

공백과 탭을 구분하는 올바른 정규 표현식은 무엇입니까? [ \t\n\x0B\f\r]를 작성하는 짧은 형태이다

[ \n\x0b\r\f] 

\s 때문에 모든 공백을 없이 탭을 얻기 위해 사용할 수도 있지만

+1

확인하십시오. http://stackoverflow.com/questions/3583111/regular-expression-find-spaces-tabs-space-but-not-newlines 그냥 돌아가십시오. – MoRe

+0

제 경우에는 별도의 regexp가 필요하며 간단하게 "[]"나를 위해 작동하지 않습니다 :/ – FILIaS

+0

나는 또한 시도 : "[\\ s^\ t]"하지만 아직 작동하지 않습니다 – FILIaS

답변

2

. 열쇠는 BlackHoleChannel에 있습니다.

이것은 revision 15의 FILIaS 솔루션입니다.

3

나는 TokenType 구문에 익숙하지 않다. documentation을 참조하십시오.

.withChannel(new BlackHoleChannel("\n"))  //removes newlines from source code 
.withChannel(regexp(TclTokenType.TAB, "\t")) //matches tabs 
.withChannel(regexp(TokenType.WHITESPACE," ")) //matches spaces 

공간 정확하게 일치하고, 탭이 인식되어 함께

+0

그것은 유효한 구문에 대한 TokenType 아니지만 상관없이 내 경우에는 ' 줄 바꿈이나 줄 끝이 공백만으로도 필요하지만 "[]"은 내 일을하지 않습니다 – FILIaS

+1

그래서 공백이라고하는 것은 _ 스페이스 _를 의미합니까? – MoRe

+0

글쎄, 맞아! – FILIaS