模式和匹配java问题

时间:2011-01-19 12:29:25

标签: java regex

  

“SOMETHING,SOMETHING1,   SOMETHING2,...“

如何将该字符串拆分为

  

SOMETHING SOMETHING1 SOMETHING2

这就是我现在所拥有的:

Pattern p = Pattern.compile("\\,+");
Matcher m = p.matcher(nVI);
while(m.find()){
System.out.println(m.group(1));

但是,它没有产生预期的结果。

3 个答案:

答案 0 :(得分:5)

究竟是什么区分?只是一个逗号和一个空格?

试试这个:

String[] parts = nVI.split(", ");

无需通过在正则表达式中编写\\,来转义逗号。

答案 1 :(得分:2)

String s = "SOMETHING, SOMETHING1, SOMETHING2";
String[] stringList = s.split(", ");

for(String str : stringList){
    System.out.println(str);
}

答案 2 :(得分:0)

这是一个更通用的解决方案(按非单词字符拆分):

String[] stringList = s.split("\\W+");

来自Pattern javadocs:

\w  A word character: [a-zA-Z_0-9]
\W  A non-word character: [^\w]

或者如果你使用Guava,你可以做同等的(实际上不完全相同,因为它也匹配非ascii字母):

for(String word:
Splitter.on(CharMatcher.JAVA_LETTER_OR_DIGIT.negate()).split(str)){
    // do something
}