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 に答える