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

为何Java的String.matches()匹配"HOLIDAY"与"H*I*Y"返回false

匹配失败原因解析

你遇到的问题核心是混淆了正则语法中*的作用和普通通配符*的作用:

  • 正则语法中*是量词,仅作用于它前面紧邻的单个字符/子表达式,表示匹配该内容零次或多次,不代表匹配任意长度的任意字符
  • 你定义的H*I*Y模式实际匹配规则为:
    • 字符串开头允许出现0~N个连续的字符H
    • 后续允许出现0~N个连续的字符I
    • 字符串末尾必须是单个字符Y

你的输入字符串HOLIDAY的实际结构为H + O + L + I + D + A + Y,H之后的O、L,以及I之后的D、A这几个字符,在你写的正则模式中完全没有对应的匹配规则,自然无法匹配成功,因此matches方法返回false。

如果要实现「以H开头、中间存在I、以Y结尾,中间可以插入任意字符」的匹配效果,应该将模式修改为H.*I.*Y:其中.是正则中匹配任意单个字符的规则,.*组合才表示匹配任意长度的任意字符序列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:45:03