Java正则表达式可以拆分单词、标点符号、空格、新行,但保留收缩?

Java正则表达式可以拆分单词、标点符号、空格、新行,但保留收缩?,java,regex,Java,Regex,我想使用正则表达式将一个长字符串按单词拆分为一个内容数组。现在我正在使用(?签出StringTokenizer。您可以指定多个分隔符(第2个参数),并可以指定是否返回此类分隔符(第3个参数设置为true以返回空格、换行符、制表符等)。如果不希望空格、制表符、换行符作为标记返回,请设置为false(或者更好的是,没有第3个参数) 产出: 'this' ' ' 'isn't' ' ' 'right' ' ' ' ' ''cause' ' ' 'it' ' ' 'ain't' ' ' 'true'

我想使用正则表达式将一个长字符串按单词拆分为一个内容数组。现在我正在使用(?签出StringTokenizer。您可以指定多个分隔符(第2个参数),并可以指定是否返回此类分隔符(第3个参数设置为true以返回空格、换行符、制表符等)。如果不希望空格、制表符、换行符作为标记返回,请设置为false(或者更好的是,没有第3个参数)

产出:

'this'
' '
'isn't'
'
'
'right'
'   '
' '
''cause'
' '
'it'
' '
'ain't'
' '
'true'

我认为您需要做的是查看
\b
(“单词边界”)的定义,然后\w(“单词”)并将
'
重新定义为单词的一部分。类似的事情,尽管这取决于您是否也需要分隔符,或者是否可以让正则表达式吞并它们

   public static void main( String[] args ) {
      String test = "Don't fear the reaper.";
      String regex = "[^a-zA-Z0-9']";
      System.out.println( Arrays.toString( test.split( regex ) ) );
   }
输出:

run:
[Don't, fear, the, reaper]
BUILD SUCCESSFUL (total time: 0 seconds)
run:
[Don't, fear, the, reaper]
BUILD SUCCESSFUL (total time: 0 seconds)