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

Java中使用正则表达式识别归属同一模式的字符串方法

正则匹配实现方案

完全可以使用正则实现该需求,对应匹配规则如下:

固定前缀匹配

如果你要匹配的公共前缀是固定值(比如示例中的foo),使用以下正则:

^foo(\(\d+\))*$

动态前缀匹配(可自动识别公共前缀)

如果需要匹配任意前缀,后续跟任意层括号包裹的数字,使用以下正则,第一个捕获组返回的就是公共前缀,前缀相同的字符串即为同一类:

^([^\(\d]+)(\(\d+\))*$

正则规则说明

  • ^:匹配字符串起始位置,避免前缀前出现多余字符
  • 固定前缀场景的foo可替换为你实际需要的任意固定前缀
  • 动态前缀场景的[^\(\d]+:匹配1个及以上的非左括号、非数字的字符作为前缀,可根据业务调整前缀允许的字符范围
  • (\(\d+\))*:核心匹配规则
    • \(、\):转义后匹配字面量的左右括号
    • \d+:匹配1个及以上的阿拉伯数字
    • 外层括号将「括号+数字」打包为一个分组,末尾的*表示该分组可以出现0次或任意多次,刚好覆盖无括号、单括号、多层括号的所有场景
  • $:匹配字符串结束位置,避免字符串末尾出现多余字符

匹配效果验证

可匹配的合法字符串

  • foo
  • foo(1)
  • foo(1234)
  • foo(1)(2)
  • foo(9)(99)(999)(9999)

不可匹配的非法字符串

  • foobar:前缀超出指定范围
  • foo(a):括号内不是数字
  • foo1:数字没有被括号包裹
  • (1)foo:前缀位置错误
  • foo(1)a:末尾有多余字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:27:05