Lua脚本 - 在字符串中查找数字

我有一个 Cisco ASA 8.4 VPN 集中器。我正在尝试使用 Lua 从传入的证书字符串中提取数字,并将它们与 AD 进行 LDAP 查找以进行授权。我找到了一个有用的字符串... 有时候。

这个字符串的格式如下:

LAST_NAME.FIRST_NAME.MIDDLE_NAME.1234567890

我的 LDAP 只想看到数字和 @domainname。我目前使用的脚本是:return string.gsub(cert.subject.cn, "^(%w+)%.(%w+)%.(%w+)%.(%w+)$", "%4@domain")

该脚本在大多数情况下(80-90%)都可以正常工作。当人们没有中间名,有4个名字而不是3个名字等情况时,它就无法工作。

我的问题是,如何使它输出只有10个数字,而不管在数字之前是什么。似乎太容易使用 return string.match,但到目前为止我无法让它工作。有任何想法吗?

点赞
用户1009479
用户1009479

你可以使用 .*(%d%d%d%d%d%d%d%d%d%d)$ 这个模式:

local str = 'LAST_NAME.FIRST_NAME.MIDDLE_NAME.1234567890'
print(str:match('.*(' .. ('%d'):rep(10) .. ')$'))

或者如果数码总是为10,那就可以用 .*(%d+)$ 这个模式。

如果这10个数码总是最后10个字符,那么可以这样做:

print(str:sub(-10, -1))
2015-02-19 15:08:00