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

如何用gsub实现模式重叠匹配?替换数字间x周边空格遇异常

问题解答

你的判断完全正确——原代码只替换第一个x的核心原因就是正则匹配的非重叠特性:当第一次匹配3 x 4时,最后一个捕获组对应的数字4已经被纳入当前匹配范围,匹配结束后,下一次匹配会从4之后的位置开始,自然无法再识别4 x 90这个部分,因为开头的4已经被"消耗"了,不会被重复用于下一次匹配。

要解决这个问题,不用把前后的数字纳入匹配范围,直接针对x周围的空格做全局替换即可:

s = s:gsub('%s*x%s*', '\u{2009}x\u{2009}')

这个代码会把所有x周围的任意数量空格(包括零个)替换为你需要的不换行空格,完全适配你给出的两种输入格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:19:50