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

Lua字符串匹配:忽略冒号分隔区域内目标串,捕获最后一个405

解决Lua字符串匹配问题:捕获最后一个非冒号分隔段中的"405"

思路分析

要忽略冒号分隔的内容,核心是排除所有处于:包裹/分隔字段内的"405",只关注冒号段之外文本中最后出现的目标值。可以通过两种高效方式实现:

具体实现代码

方法一:先剥离冒号分隔段,再查找目标

local str = "hello item:::::405498:::244405553::3405:34:405:59:::445:447:3205:::[test] and another 405 with test"
-- 替换所有冒号包裹的分隔字段为空
local cleaned_str = str:gsub(":[^:]*:", "")
-- 捕获最后出现的"405"及其前后内容
local before, target, after = cleaned_str:match("^(.*)(405)(.*)$")

print("找到的目标405:", target)
print("目标前内容:", before)
print("目标后内容:", after)

方法二:直接匹配非冒号段内的最后一个"405"

无需提前清理字符串,直接用Lua模式精准定位:

local str = "hello item:::::405498:::244405553::3405:34:405:59:::445:447:3205:::[test] and another 405 with test"
-- 模式确保"405"前后非冒号,避免匹配冒号分隔段内的内容
local before, target, after = str:match("^(.*[^:])(405)([^:].*)$")

print("最后出现的405:", target)

代码说明

  • :[^:]*:是Lua模式,匹配所有从:开始到下一个:结束的内容,用gsub替换为空后,仅保留冒号外的有效文本
  • ^(.*)(405)(.*)$会匹配整个字符串,自动捕获最后一次出现的"405"及其前后内容
  • .*[^:]和[^:].*的组合,确保"405"不处于冒号包裹的字段中,精准过滤掉无效匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:02:10