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

Java中scanner.skip正则代码含义及括号内内容解析

解析scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?")的正则逻辑

你提到的这行代码是为了跳过输入整数N之后残留的各类换行/换行相关控制字符,避免后续若有输入操作时出现异常或读取错误。下面拆解括号内正则表达式的具体含义:

  • 末尾的?:表示整个匹配模式是可选的——也就是说,如果输入整数后没有任何换行类字符,这行代码也不会报错,直接跳过0个字符。
  • 括号内的\r\n|[\n\r\u2028\u2029\u0085]是一个二选一的匹配规则:
    • \r\n:匹配Windows系统的标准换行组合(回车符\r + 换行符\n)
    • [\n\r\u2028\u2029\u0085]:这是一个字符集合,匹配任意单个换行/换行类控制字符:
      • \n:Unix/Linux/macOS系统的换行符
      • \r:老式Mac系统的回车符
      • \u2028:Unicode定义的行分隔符
      • \u2029:Unicode定义的段落分隔符
      • \u0085:Unicode定义的下一行字符

这种写法是为了兼容所有操作系统和Unicode标准中的换行类字符,确保读取整数后清空后续的换行垃圾字符。在你提供的代码里,因为之后直接关闭了Scanner,所以这行的作用不明显,但这是HackerRank题目里的通用写法,方便后续扩展输入逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:36:53