0

我有以下字符串

  • 詹金斯客户端 1.4
  • perl-5.16
  • 红宝石-1.9
  • 10gen-mms-agent-1.0

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

  • 詹金斯克莱特

  • perl
  • 红宝石
  • 10gen-mms-agent

谢谢,-彼得

4

2 回答 2

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();
    }
}
于 2013-05-08T06:26:43.390 回答
0

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

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

于 2013-05-08T06:27:14.410 回答