Lua скрипт - намиране на цифри в низ

Имам 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, но досега не мога да го накарам да работи. Някакви идеи?


person Kevin Pease    schedule 19.02.2015    source източник


Отговори (1)


Можете да използвате шаблона .*(%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))
person Yu Hao    schedule 19.02.2015
comment
може да е само str:match("(%d+)$")? - person moteus; 19.02.2015