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

修复无法正确匹配大于X的罗马数字及EP编号的正则表达式问题

正则匹配问题修复方案

原正则问题根因

原有正则的核心问题是罗马数字匹配规则增加了不必要的^行首锚定,和开头的(.*?)惰性匹配逻辑冲突,同时罗马数字匹配规则仅支持10以内取值,导致≥10的罗马数字会被开头的通配符直接吞入第一个分组。

修正后正则

如果你的场景需要支持1~3999范围的罗马数字,使用通用版本:

^.*?\b(M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))\s+EP\. (\d+).*$

如果仅需要匹配最大到39的罗马数字(XXXIX以内),可以使用简化版本:

^.*?\b(X{0,3}(IX|IV|V?I{0,3}))\s+EP\. (\d+).*$

功能说明

  • 开头的^.*?\b直接跳过罗马数字之前的所有内容,完全符合“忽略前缀”的需求
  • 罗马数字匹配规则覆盖对应范围内的所有合法写法,不会出现≥10就匹配异常的问题
  • 分组1对应匹配到的罗马数字,分组2对应匹配到的EP集数

测试效果

针对测试文本PEPA THE PIG XVI EP. 169 - BAD ENDING:

  • 分组1命中结果:XVI
  • 分组2命中结果:169
    完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 12:06:03