2012-10-26 112 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' :)移除大括号。 –