2012-10-26 152 views
1

什麼是正則表達式,我應該通過String.split()爲了分割字符串由任何符號用任何符號分割字符串

現在,任何符號我的意思是下列任何一項:

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

基本上任何非字母和非數字打印的字符。

+0

你的意思是任何非字母數字字符? – thatidiotguy

+0

是的,我想是的。 – user1508893

+5

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

回答

5

你應該使用一個非字即\W

\W\w

\W逆類似於[^a-zA-Z0-9_]所以除了_

OR

將匹配任何非單詞字符。

你可以簡單地使用[^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' :)移除大括號。 –