我需要创建正则表达式,它将从文件中拆分第一行,如下所示:
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");
怎么做?
答案 0 :(得分:1)
String[] wartosci = line.split("[>\\s]+");
这将拆分>
和空格字符的任何序列。见documentation of Pattern
答案 1 :(得分:0)
我认为你需要拆分任何非数字。所以,使用
String results[] = s.split("\\D+");
请参阅IDEONE demo
此处,\D+
匹配一个或多个非数字字符。
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。