3

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% の確率で) 正常に機能します。それがうまくいかないのは、人々にミドルネームがない、3つではなく4つの名前がある、などです。

私の質問は、その前に何があるかに関係なく、どうすれば 10 桁だけを出力できるかということです。return string.match では簡単すぎるように思えますが、これまでのところ、動作させることはできません。何か案は?

4

1 に答える 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) .. ')$'))

または.*(%d+)$、桁数が常に 10 の場合。

10 桁が常に最後の 10 文字である場合、これは機能します。

print(str:sub(-10, -1))
于 2015-02-19T15:08:00.777 に答える