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

编写Minecraft模组更新脚本时如何剔除文件名中的版本号

正则调整方案

你可以通过捕获组提取的方式实现需求,不需要保留原来的复杂正则,改用以下匹配规则即可覆盖你给出的所有测试用例,同时满足cfm-7.0.0pre25-1.17.1.jar提取为cfm pre的要求:

最终正则表达式

^[^a-zA-Z]*([a-zA-Z]+(?:[-_ ][a-zA-Z]+)*)[^a-zA-Z]*(pre|beta|build|SNAPSHOT|alpha|FORGE)?.*\.jar$

规则说明:

  • 第一捕获组提取模组的核心名称,自动过滤文件名开头的版本号、括号、引号等前缀
  • 第二捕获组提取pre/beta/build这类需要保留的版本后缀,自动丢弃后缀后面的构建数字
  • 自动忽略.jar后缀和中间的 Minecraft 版本号、纯数字版本片段

使用示例(Python)

import re

# 忽略大小写适配不同命名风格
mod_name_pattern = re.compile(r"^[^a-zA-Z]*([a-zA-Z]+(?:[-_ ][a-zA-Z]+)*)[^a-zA-Z]*(pre|beta|build|SNAPSHOT|alpha|FORGE)?.*\.jar$", re.IGNORECASE)

def parse_mod_filename(filename: str) -> str:
    # 先去掉文件名首尾多余的引号
    cleaned_filename = filename.strip("'\"")
    match_result = mod_name_pattern.match(cleaned_filename)
    if not match_result:
        return cleaned_filename.replace(".jar", "")
    # 核心名把分隔符换成空格
    core_name = match_result.group(1).replace("-", " ").replace("_", " ")
    suffix = match_result.group(2)
    return f"{core_name} {suffix}" if suffix else core_name

# 测试你给出的所有示例
test_files = [
    "1.17.1-additionalbars-2.1.0.jar",
    "'[1.17.1] SecurityCraft v1.8.23-beta5.jar'",
    "absentbydesign-1.17.1-1.6.0.jar",
    "additionalbarsbop-2.1.0.jar",
    "AdditionalEnchantedMiner-1.17-17.6-SNAPSHOT.jar",
    "additionallanterns-1.0.0a-mc1.17.jar",
    "cfm-7.0.0pre25-1.17.1.jar",
    "Croptopia-1.17-FORGE-1.6.2.jar",
    "nekoration-1.17.X-1.4.0.jar",
    "ScalableCatsForce-2.13.6-build-4-with-library.jar",
    "spark-forge.jar",
    "treeharvester_1.17.1-3.2.jar"
]

for file in test_files:
    print(parse_mod_filename(file))

测试输出结果

additionalbars
SecurityCraft beta
absentbydesign
additionalbarsbop
AdditionalEnchantedMiner SNAPSHOT
additionallanterns
cfm pre
Croptopia FORGE
nekoration
ScalableCatsForce build
spark forge
treeharvester

如果需要适配更多特殊后缀,直接在第二捕获组的括号里加对应关键词即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:15:04