2013-08-21 66 views
1

我有一個像正則表達式最後一次出現到結束的字符串在TCL

AVPs_List,Vendor_Specific_Application_Id,3,AVP.Vendor_ID,0,AVP.Header,AVP.Code 

我想正則表達式/ regsub得到一個輸出像

AVPs_List,Vendor_Specific_Application_Id,3,AVP.Vendor_ID 

其實我想減去一個字符串模式「,[0-9],」的最後一次出現的部分到字符串的末尾。像串< XXXX,9898,YYYY,87,ZZZZ,56,AAAA>,我想< XXXX,9898,YYYY,87,ZZZZ>

我根據圖形做的正則表達式,[0-9],並使用此代碼

regsub {(,)([0-9]+)(,).*} $str1 "" $result 

但字符串是從第一次出現微調,看起來像

AVPs_List,Vendor_Specific_Application_Id 

請幫助。

回答

1

您可以匹配,而不是像這樣:

% set str1 "AVPs_List,Vendor_Specific_Application_Id,3,AVP.Vendor_ID,0,AVP.Header,AVP.Code" 
AVPs_List,Vendor_Specific_Application_Id,3,AVP.Vendor_ID,0,AVP.Header,AVP.Code 
% regexp {(.*),[0-9]+,} $str1 -> result 
1 
% puts $result 
AVPs_List,Vendor_Specific_Application_Id,3,AVP.Vendor_ID 

.*被貪婪和匹配儘可能多的字符,它會在最後,[0-9]+,匹配之前。

+0

我也意識到有關'。*'的問​​題,但無法繞過某種方式。謝謝@Jerry –

相關問題