You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何仅对Markdown图片的方括号内文本执行Un-CamelCase操作而不修改文件名?

如何仅对Markdown图片的方括号内文本执行Un-CamelCase操作而不修改文件名?

这个需求太贴合实际了!想拆分alt文本里的驼峰命名,又怕不小心改到后面的文件名,其实只要给你的正则加个「范围锁」就行,让它只在方括号[]里的内容里找匹配位置。

方法一:在常用编辑器(VS Code/Sublime Text等)里快速替换

直接用下面的正则做查找替换:

  • 查找内容(?<=\!\[[^\]]*)(?<=[a-z])(?=[A-Z])(?=[^\]]*\])
  • 替换内容 (一个空格)

我给你拆解下这个正则的作用:

  • (?<=\!\[[^\]]*):确保当前位置在![之后,且还没到],直接锁定在方括号的内容范围内
  • (?<=[a-z])(?=[A-Z]):你原来用来匹配「小写字母后接大写字母」的核心规则
  • (?=[^\]]*\]):确保当前位置后面还有内容直到],进一步限定只能在方括号内操作

举个例子,原来的文本:

![116-BowlOfApples](./media/116-BowlOfApples.jpg)

用这个替换后就会变成:

![116-Bowl Of Apples](./media/116-BowlOfApples.jpg)

完全不会碰后面的文件名,完美符合你的需求!

方法二:用脚本批量处理(比如Python)

如果需要批量处理大量Markdown文件,可以写个小脚本自动处理:

import re

def fix_alt_text(file_path):
    # 读取文件内容
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()
    
    # 定义替换逻辑:只处理方括号内的驼峰文本
    def replace_camelcase(match):
        alt_text = match.group(2)
        # 拆分驼峰
        new_alt = re.sub(r'(?<=[a-z])(?=[A-Z])', ' ', alt_text)
        # 拼接回原格式
        return f"{match.group(1)}{new_alt}{match.group(3)}"
    
    # 替换所有图片的alt文本
    updated_content = re.sub(r'(\!\[)([^\]]+)(\])', replace_camelcase, content)
    
    # 保存修改后的内容
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(updated_content)

# 调用示例,替换单个文件
fix_alt_text("your_markdown_file.md")

这个脚本会遍历文件里所有的图片语法,只修改方括号里的alt文本,文件名原封不动。

备注:内容来源于stack exchange,提问作者CJB

火山引擎 最新活动