Lua和松散的模式匹配

在 Lua 中,如何将 123 与字符串 11122333 进行匹配,并找到 1、2 和 3?是否有一个可以做到这一点的模式?而不是附加单个字符检查?

点赞
用户1847592
用户1847592

local str = '11122333' str = str:gsub('.','\0%0%0'):gsub('(.)%z%1',''):gsub('%z.','')


本地变量 str 被初始化为字符串 11122333。接着执行了三个 gsub 操作:

  1. 将字符串中的每个字符都替换为以零字节和该字符本身为前缀的字符串(例如 '1' 变为 '\0111'),也就是在每个字符的前面加上两个相同的字符。

  2. 删除由两个重复字符组成的子串(例如 '11')。

  3. 删除每个字符和后面的零字节(例如 '\0111' 变为 '11')。

最终结果是字符串 '123'

2013-04-12 09:54:02