正则表达式最后一次出现在tcl中字符串结尾的模式

时间:2013-08-21 13:20:16

标签: regex tcl

我有一个像

这样的字符串
    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

请帮忙。

1 个答案:

答案 0 :(得分: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]+,