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

如何将三种a/b转\frac{a}{b}的Lua模式合并为单个模式?

合并Lua模式实现分数格式转换

转换需求

需要将包含a/b(a、b为任意非空格字符)的文本按以下三种场景转换:

  • 输入:Hello a/b hi → 输出:Hello \frac{a}{b} hi
  • 输入:a/b hi → 输出:\frac{a}{b} hi
  • 输入:Hello a/b → 输出:Hello \frac{a}{b}

原有分场景实现

最初针对三种场景分别编写了三个替换语句:

line, _ = string.gsub(line, "%s+(%S+)/(%S+)%s+", "\\frac{%1}{%2}")
line, _ = string.gsub(line, "^(%S+)/(%S+)%s+", "\\frac{%1}{%2}")
line, _ = string.gsub(line, "%s+(%S+)/(%S+)$", "\\frac{%1}{%2}")

合并为单模式实现

可以通过匹配行首/前置空格、行尾/后置空格的可选情况,将三个模式浓缩为单个Lua模式:

line, _ = string.gsub(line, "(^|%s+)(%S+)/(%S+)(%s+|$)", "%1\\frac{%2}{%3}%4")

模式解释

  • (^|%s+):匹配行首或者一个及以上前置空格,用捕获组保留该部分
  • (%S+)/(%S+):捕获非空格字符组成的a和b,匹配a/b核心结构
  • (%s+|$):匹配一个及以上后置空格或者行尾,用捕获组保留该部分
  • 替换时通过%1、%4保留原有的前置/后置空格或行首行尾位置,确保转换后文本的空格布局和原文本一致,完美覆盖三种场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:42:22