【发布时间】:2015-12-14 23:42:03
【问题描述】:
我如何将两个“16”拉出来
- Bar Foo Bar: Foo8:16 Foo Bar Bar foo barz
- 8:16 Foo Bar Bar foo barz
这是我尝试过的
String V,Line ="Bar Foo Bar: Foo8:16 Foo Bar Bar foo barz";
V = Line.substring(Line.indexOf("([0-9]+:[0-9]+)+")+1);
V = V.substring(V.indexOf(":")+1, V.indexOf(" "));
System.out.println(V);
这是我得到的错误
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -9
at java.lang.String.substring(String.java:1955)
at Indexing.Index(Indexing.java:94)
at Indexing.main(Indexing.java:24)
我在http://regexr.com/ 测试了 regex("([0-9]+:[0-9]+)+") 并正确突出显示“8:16”
【问题讨论】:
-
期望输出是什么?
-
您需要使用 Java Regex 库以您想要的方式进行列表类型的搜索。你不能只用正则表达式来做
indexOf。 -
indexOf()函数不需要正则表达式 -
16 是预期的输出