使用string.gsub进行简单的Lua文本搜索?

使用 Lua 的 string.gsub 函数进行类似的普通搜索,基本上,我想知道如何实现相同的普通搜索。

点赞
用户945873
用户945873

我原本以为标准库里会有相关的内容,但是没有。那么解决办法就是对模式中的特殊字符进行转义,以免其发挥通常的功能。

下面是一般的思路:

  1. 获取模式字符串
  2. 将任何特殊字符替换为%加上它本身(例如,%变成%%[变成%[
  3. 将其用作查找模式以替换文本。
2015-04-08 00:35:21
用户107090
用户107090

以下是一个简单的用于文本替换的库函数:

function string.replace(text, old, new)
  local b,e = text:find(old,1,true)
  if b==nil then
     return text
  else
     return text:sub(1,b-1) .. new .. text:sub(e+1)
  end
end

可以通过 newtext = text:replace(old,new) 调用该函数。

请注意,此函数只替换在 text 中第一个出现的 old

2015-04-08 02:50:37
用户3735873
用户3735873

使用此函数来转义搜索字符串中的所有魔法字符(仅限这些字符)。

function escape_magic(s)
  return (s:gsub('[%^%$%(%)%%%.%[%]%*%+%-%?]','%%%1'))
end
2015-04-08 20:56:26