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

编写匹配Lemmy剧透标签的JavaScript正则表达式问题

解决方案

针对Lemmy剧透标签的JavaScript正则匹配需求,修正后的正则表达式可以处理多行内容、带格式文本及含冒号的内容:

/:::\sspoiler\s+(?<title>.+)\n(?<body>(?:.|\n)*?)\n:::/gms

关键修改说明

  1. 模式标志:
    • g:全局匹配文本中的所有剧透标签(若有多个)
    • m:多行模式,确保行尾换行符的判断准确
    • s:启用dotAll模式,让.可以匹配换行符
  2. body组匹配逻辑:
    • (?<body>(?:.|\n)*?):使用非贪婪匹配(*?)捕获所有内容(包括换行),直到遇到单独一行的:::结束标签,避免提前终止匹配
  3. 结束标签匹配:\n:::明确匹配单独一行的结束标记,不会误匹配内容中的冒号或部分类似字符

匹配验证

该正则可正确处理所有测试示例:

  • 单行剧透内容:title组捕获"title of the spoiler",body组捕获"content"
  • 多行带Markdown格式的内容:完整捕获跨换行的文本及加粗格式
  • 含冒号的内容:不会因body中的colon:提前终止匹配

原正则的问题

原表达式:::\sspoiler\s+(?<title>.+)\n(?<body>.+)\n:::的核心缺陷:

  • .+默认不匹配换行符,无法捕获多行body内容
  • 没有启用非贪婪匹配,即使修改匹配换行也可能过度匹配到后续内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:12:09