You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java正则仅匹配1个结果:爬取OSRS排行榜用户名异常求助

问题核心原因

你写的正则使用了贪婪匹配模式的.*,默认会尽可能匹配最多的字符:会从页面中第一个user1=位置开始,一直匹配到整个HTML源码末尾最后一个">才停止,所以整个匹配过程只会触发1次m.find(),拿到的group(1)其实包含了第一个用户名到源码末尾的所有内容,自然只能提取到第一个用户名。

修复方案

把正则规则替换为非贪婪匹配,或者用排除型字符组限制匹配范围即可,两种写法选其一:

  • 写法1(非贪婪匹配,逻辑直观):user1=(.*?)"
  • 写法2(排除型字符组,匹配效率更高):user1=([^"]+)"

修改后不需要再对group(1)做split处理,group(1)直接就是完整的用户名。

修正后核心代码

// 替换原有的Matcher初始化和循环逻辑即可
Matcher m = Pattern.compile("user1=([^\"]+)\"").matcher(s);
while(m.find()) {
    log(m.group(1));
}

可选优化建议

如果后续需要长期维护这个爬虫,更推荐用Jsoup这类HTML解析库直接定位DOM节点提取内容,比正则匹配的兼容性更高,不会因为页面结构微小变化就失效。

内容的提问来源于stack exchange,提问作者danieildefos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:24:00