2013-05-08 57 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(); 
    } 
}