如何使用string.find找到一个模式的最后一次出现?

我一直想尝试使用 string.find 找到模式的最后一次出现而不是第一次出现。

例如:在字符串“AAAAABBB”中,我想找到最后一个“A”的位置而不是第一个。

这可能吗?

谢谢。

点赞
用户258523
用户258523

local str = "123456AAA7890AAABBBB" local s, e = str:find("A[^A]*$")

print(s) print(str:sub(s))


另一种方法是反转字符串并使用更简单的 string.find 调用。

local str = "123456AAA7890AAABBBB"
local revstr = str:reverse()
local ind = revstr:find("A")

print(#revstr - ind + 1)
print(str:sub(#revstr - ind + 1))

```

2015-01-07 12:26:57
用户107090
用户107090

尝试使用空捕获组:

str = "123456AAA7890AAABBBB"
print(str:match(".*()A"))

如果您需要使用 string.find,请尝试以下代码:

local _,p = str:find(".*A")
print(p)
2015-01-07 20:23:27