我将一个网页转换为字符串,我试图从这一行中提取三个数字。
<td class="col_stat">1</td><td class="col_stat">0</td><td class="col_stat">1</td>
从上面的行我已经使用它提取了第一个'1'
String filePattern = "<td class=\"col_stat\">(.+)</td>";
pattern = Pattern.compile(filePattern);
matcher = pattern.matcher(text);
if(matcher.find()){
String number = matcher.group(1);
System.out.println(number);
}
现在我想做的是提取 0 和最后一个 1,但只要我尝试编辑上面的正则表达式,它只会在控制台上输出完整的网页。有人有什么建议吗?? 谢谢
最佳答案
正则表达式匹配是贪婪的,试试这个(只查找 (\d+)
而不是 (.+)
(匹配所有内容直到最后一个 </td>
):
String text =
"<td class=\"col_stat\">1</td>" +
"<td class=\"col_stat\">0</td>" +
"<td class=\"col_stat\">1</td>";
String filePattern = "<td class=\"col_stat\">(\\d+)</td>";
Pattern pattern = Pattern.compile(filePattern);
Matcher matcher = pattern.matcher(text);
while (matcher.find())
{
String number = matcher.group(1);
System.out.println(number);
}
在相关说明中,我完全同意其他人关于使用更结构化的方法来解释 HTML 的建议。
关于Java RegEx - 仅从网页中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12262706/