2012-10-26 2 views
1

문자열을 기호으로 나눌 때 String.split()으로 전달해야하는 정규식은 무엇입니까? 이제 임의의 기호로 문자열 분할

, 어떤에 의해 기호 나는 다음 중 하나를 의미 :

`~`, `!`, `@`, `#`, ... 

기본적으로 비 문자와 숫자가 아닌 인쇄 가능한 문자.

+0

당신이 아닌 영숫자을 의미합니까? – thatidiotguy

+0

그래, 그런 것 같아. – user1508893

+5

'.split ("[^ a-zA-Z0-9]")' – NullUserException

답변

5

당신은 \W

\W 즉 비 단어를 사용한다는 \w

\W의 역이 [^a-zA-Z0-9_]과 유사하다 그래서 _

또는

제외한 모든 비 단어 문자와 일치합니다

을 사용하면됩니다.

+0

나는 이것이 효과가 있다고 생각한다. 감사합니다 – user1508893

1

당신도 Spring.split("[[email protected]$]") 같은 구체적 또는 당신이를 사용하여 시도 할 수 있습니다 Spring.split("[^\\w]")

+0

\ w = [a-zA-Z0-9_] – pogo

+0

감사합니다. –

+0

'[^ \ w] == \ W == [^ a-zA-Z0-9_]'이므로 밑줄이 포함되어 있습니다. – NullUserException

3

에 분할하지 않을 값을 나열 할 수 : -이

str.split("[^a-zA-Z0-9]"); 

이는 underscore 포함되지 않습니다.

\W는 것과 같습니다 : - "[a-zA-Z0-9_]"

+0

@NullUserException. 업데이트 된 게시물. 감사합니다 :) –

+0

'[_^\ w]'는 당신이 생각하는대로하지 않습니다. – NullUserException

+0

오. 그렇다면 우리는 어떻게 그것으로부터'_'을 제거하겠습니까? –

1

당신은 \W 또는 ^\w를 사용할 수 있습니다. 여기에서 자세한 내용을 찾을 수 있습니다 : Regex: Character classes

String str = "[email protected]$d!e"; 
    String[] splitted = str.split("\\W"); 
    System.out.println(splitted.length); //<--print 4 

또는

String str = "[email protected]$d!e"; 
    String[] splitted = str.split("[^\\w]"); 
    System.out.println(splitted.length); //<--print 4 
+0

'[\\ W]'는 중복되어 있습니다. 단지'\\ W'가 아닌가요? – NullUserException

+0

@ NullUserException : 나는 다른 패턴을 넣기 시작했다. '[^ a-zA-Z0-9]'는 '\ W'로 바뀌 었습니다 :) 중괄호를 제거했습니다. –