2013-05-08 50 views
0

我有以下的字符串正則表達式來提取此字符串

  • 詹金斯-客戶1.4
  • 的perl-5.16
  • 紅寶石-1.9
  • 10gen的-MMS代理-1.0

    是否可以使用正則表達式來提取短劃線和版本中的術語,並將其刪除以最終得到如下所示的內容?

  • 詹金斯-cleint

  • perl的
  • 紅寶石
  • 10gen的-MMS代理

THX, -Peter

回答

0

這樣做:(.*?)-[0-9][0-9.]+

.*?匹配任何東西,但儘可能少。這是您要提取的捕獲組。 -[0-9][0-9.]匹配連字符,然後是數字,然後是任意數字和句點。

2

實施例爲C#

using System; 
using System.Text.RegularExpressions; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     string[] terms = new string[] { 
       "jenkins-client-1.4", 
       "perl-5.16", 
       "ruby-1.9", 
       "10gen-mms-agent-1.0" 
      }; 
     Regex termRegex = new Regex(@"^(.+)-(\d+[.]\d+)$"); 
     foreach (string term in terms) 
      if (termRegex.IsMatch(term)) 
       Console.WriteLine(termRegex.Match(term).Groups[1].Value); 
     Console.ReadLine(); 
    } 
}