如何使用正则表达式拆分线

时间:2015-11-16 14:49:19

标签: java regex

我需要创建正则表达式,它将从文件中拆分第一行,如下所示:

Array[0] = 0 
Array[1] = 2
Array[2] = 3

以下是此文件的示例

0 > 2 3
2 > 0 2
0 > 1 1
1 > 2 4

我尝试过这样做,它没有像0>2 3这样的空白字符,但我从老师那里听说>之间的空格是必要的。

我的正则表达式:

String[] wartosci = line.split(">|\\s");

怎么做?

2 个答案:

答案 0 :(得分:1)

String[] wartosci = line.split("[>\\s]+");

这将拆分>和空格字符的任何序列。见documentation of Pattern

答案 1 :(得分:0)

我认为你需要拆分任何非数字。所以,使用

String results[] = s.split("\\D+");

请参阅IDEONE demo

此处,\D+匹配一个或多个非数字字符。

Java demo

String s = "0 > 2 3";
String results[] = s.split("\\D+");
System.out.println(Arrays.toString(results));
// => [0, 2, 3]

请注意,Avinash [>\\s]+是一种白名单方法,如果您打算遵循它,则可能需要使用其他符号扩展字符类(例如<,{{1 },甚至= ...

关于性能的几句话:你的-正则表达式正在使用一个符号交替,这个字符类>|\\s的效率低得多,因为它可以减少回溯(因为它被编译成1& #34;实体&#34;在&#34;正则表达式内部程序&#34;)。每当您想要匹配一组字符中的1个符号时,请使用character class