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

时间:2015-02-19 14:58:45

标签: lua lua-patterns asa

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

字符串的格式为:

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位数,无论前面是什么。使用返回string.match似乎太容易了,但到目前为止我无法使其工作。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您可以使用模式.*(%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))