2012-06-28 3 views
1
local invoiceData = 
[[I N V O I C E 
Invoice No. : 
ABCDEFG125469857 
Invoice Date May 
2012 
]] 

내가 사용하고 패턴을 사용하여 필요한 문자열을 얻을 어떻게 내가 MAY12로 문자열 인보이스 날짜를 가져 오기 할루아 패턴 -이 루아 패턴

print (string.match(invoiceData,'\nInvoice Date (.-)\n')) 

입니다. 또는 0512 ..

감사

답변

2

대신 .-과 일치하는, 더 구체적으로하고, 월 및 연도와 일치하도록 %w+ (알파 - nums)와 %d+ (자리)를 사용하여 도와주세요.

스크립트 :

local invoiceData = 
[[I N V O I C E 
Invoice No. : 
ABCDEFG125469857 
Invoice Date May 
2012 
]] 

month, year = string.match(invoiceData,'Invoice%s+Date%s+(%w+)%s+%d*(%d%d)') 
print(month, year) 

인쇄됩니다

May 12
+1

영업 이익은 세기를 원하지 않습니다. 그래서 이것은 마지막 부분에서'% d % d (% d % d)'를 사용합니다. OTOH, 당신의 패턴은 경우에 따라 더 강력합니다. – lhf

+0

@lhf, 좋은 지적. 나는 ('% d + ')에서 %'d (% d % d)''로''2012 ...'와''... 12''와''12 " " –