正则表达式来提取此字符串

时间:2013-05-08 06:20:47

标签: regex

我有以下字符串

  • 詹金斯-客户1.4
  • 的perl-5.16
  • 红宝石-1.9
  • 10gen的-MMS代理-1.0

    是否可以使用正则表达式来提取带有破折号和版本的术语,最终得到如下内容?

  • 詹金斯-cleint

  • perl的
  • 红宝石
  • 10gen的-MMS代理

THX, -Peter

2 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:0)

这样做:(.*?)-[0-9][0-9.]+

.*?匹配任何内容,但尽可能少。这是您要提取的捕获组。 -[0-9][0-9.]匹配连字符,然后是数字,然后是任意数量的数字和句点。