2

我有一个字符串

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

我想使用 regexp / 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

请帮忙。

4

1 回答 1

2

您可以改为匹配,如下所示:

% 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]+,

于 2013-08-21T13:25:29.423 回答