我有一个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似乎太容易了,但到目前为止我无法使其工作。有什么想法吗?
答案 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))