我想使用正则表达式按单词将长字符串分成其内容数组。现在我正在使用(?<= \ b),但问题在于它会拆分紧缩的单词(例如,您正在固定,诸如此类)。我需要一个能使标点符号成为其自身元素的正则表达式,但在上述情况下,以及制表符,空格,换行符也是其自身的元素。有什么想法吗?
答案 0 :(得分:0)
签出StringTokenizer。您可以指定多个定界符(第二个参数),还可以指定是否返回这样的定界符(将第三个参数设置为true以返回空格,换行符,制表符等)。如果您不希望将空格,制表符,换行符作为标记返回,则将其设置为false(或者更好的是,没有第3个参数)。
String testString = "this isn't\nright\t 'cause it ain't true";
StringTokenizer s = new StringTokenizer(testString," \n\t\r",true);
while (s.hasMoreTokens()) {
System.out.println("'" + s.nextToken() + "'");
}
输出:
'this'
' '
'isn't'
'
'
'right'
' '
' '
''cause'
' '
'it'
' '
'ain't'
' '
'true'
答案 1 :(得分:0)
我认为您需要做的是先查看\b
(“单词边界”)的定义,然后再查看\ w(“ word”),然后重新定义'
作为单词的一部分。像这样的东西,尽管这取决于您是否也需要定界符,或者是否可以让正则表达式将其吞下。
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)