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

3
我有一个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位数字,而不管前面是什么。使用一个return string.match似乎太容易了,但至今我还无法让它正常工作。你有什么想法吗?
1个回答

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位数,可以使用 \d{10}

print(str:sub(-10, -1))

6
也许只需要使用 str:match("(%d+)$") - moteus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接