2 回答

TA贡献1851条经验 获得超3个赞
给定输入,以下将提取每行的数字。
Pattern pattern = Pattern.compile("\\d+");
while (in.hasNext())
{
String str = in.nextLine();
Matcher m = pattern.matcher(str);
while (m.find())
{
//Change this to add to add to an array
System.out.println(m.group());
}
}

TA贡献1831条经验 获得超10个赞
鉴于您的输入有限,我仅使用纯扫描仪界面就做到了:
public class Scrap {
private final static String HOUR_PATTERN = "<td>\\d{2}-\\d{2}</td>";
private final static String TD_DELIMETER = "\\s|<|>";
public static void main(String[] args) {
Scanner in = new Scanner(Scrap.class.getResourceAsStream("/input"));
List<Integer> res = new ArrayList<>();
while (in.hasNext()) {
if (!in.hasNext(HOUR_PATTERN)) {
System.out.println(in.next());
continue;
}
String found = in.next(HOUR_PATTERN);
Pattern delim = in.delimiter();
in.useDelimiter(TD_DELIMETER);
for (int i = 0; i < 8; i++) {// you wrote it is going to be 8 entries
while (in.hasNext()) {
if (in.hasNextInt()) {
res.add(in.nextInt());
} else {
System.out.println(in.next());
}
}
}
in.useDelimiter(delim);
}
System.out.println(res);
}
}
给定输入
blelblebll
<td>00-01</td>
<td align="right"> 11872</td>
<td align="right"> 12146</td>
<td align="right"> 12861</td>
<td align="right"> 12561</td>
<td align="right"> 13493</td>
<td align="right"> 13386</td>
<td align="right"> 12732</td>
<td align="right"> <b>12249</b></td>
<td>00-01</td>
<td align="right"> 11872</td>
<td align="right"> 12146</td>
<td align="right"> 12861</td>
<td align="right"> 12561</td>
<td align="right"> 13493</td>
<td align="right"> 13386</td>
<td align="right"> 12732</td>
<td align="right"> <b>12249</b></td>
<td>00-01</td>
<td align="right"> 11872</td>
<td align="right"> 12146</td>
<td align="right"> 12861</td>
<td align="right"> 12561</td>
<td align="right"> 13493</td>
<td align="right"> 13386</td>
<td align="right"> 12732</td>
<td align="right"> <b>12249</b></td>
<td>00-01</td>
<td align="right"> 11872</td>
<td align="right"> 12146</td>
<td align="right"> 12861</td>
<td align="right"> 12561</td>
<td align="right"> 13493</td>
<td align="right"> 13386</td>
<td align="right"> 12732</td>
<td align="right"> <b>12249</b></td>
生产
[11872, 12146, 12861, 12561, 13493, 13386, 12732, 12249, 11872, 12146, 12861, 12561, 13493, 13386, 12732, 12249, 11872, 12146, 12861, 12561, 13493, 13386, 12732, 12249, 11872, 12146, 12861, 12561, 13493, 13386, 12732, 12249]
它基于您的输入示例,因此它现在可能适用于实时标记。
或者,您可以将<.*?>其用作分隔符并仅关注数字模式。
添加回答
举报