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

Java 8下正则实现多字符串等值匹配的写法问题咨询

正则修改方案

问题根因

你当前的正则存在两个核心问题:

  • 正则中(、)属于分组元字符,如需匹配字面量括号必须转义,Java字符串中需要写双反斜杠\\作为转义符
  • 分支符|的优先级低于锚点符^、$,未用分组包裹时,^仅作用于第一个分支UK (Main Land),$仅作用于最后一个分支Italian,逻辑不符合全量等值匹配的要求
    之前German、Japan等中间分支能正常匹配是巧合:Java的String.matches()方法要求整个字符串完全匹配正则,当输入正好等于中间分支的字符串时,刚好能命中对应分支规则。

最终修改后的正则

优化版(非捕获分组,无额外内存开销)

"^(?:UK \\(Main Land\\)|German|Japan|Swiss|French|Italian)$"

普通版(功能一致)

"^(UK \\(Main Land\\)|German|Japan|Swiss|French|Italian)$"

匹配效果

修改后可完全等值匹配以下所有目标字符串,其余字符串均会被拦截:

  • UK (Main Land)
  • German
  • Japan
  • Swiss
  • French
  • Italian

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:57:03