使用Regex提取版本信息

时间:2016-12-07 10:07:01

标签: c# regex

我需要从以下字符串中提取版本信息

993-756-V01 ver 02a

我需要使用什么正则表达式才能从993-756-V 01 ver 02 <中提取 01 02 /强>一

我尝试使用以下正则表达式提取版本子字符串,即 V01 ver 02a

[A-Z][0-9]{2} ver [0-9]{2}

但是有更直接的方法来提取信息

2 个答案:

答案 0 :(得分:1)

您可以使用带有命名捕获组的正则表达式来捕获所需的信息。请参阅以下代码:

var s = "993-756-V01 ver 02a";
var result = Regex.Match(s, @"(?<major>[0-9]+)\s+ver\s+(?<minor>[0-9]+)");
if (result.Success)
{
    Console.WriteLine("Major: {0}\nMinor: {1}", 
        result.Groups["major"].Value, result.Groups["minor"].Value);
}

请参阅C# demo

模式详情

  • (?<major>[0-9]+) - 群组“主要”捕获1+位数
  • \s+ - 1+空格
  • ver\s+ - ver子字符串,然后是1 +空格
  • (?<minor>[0-9]+) - 群组“次要”捕获1+位数

答案 1 :(得分:1)

我看到的另一个短暂的可能性是使用以下模式:

V(\d+)\D+(\d+)

下面:

V     = Literal `V` capital alphabet.
(\d+) = Captures any digit from 0-9 following `V` character. 
\D+   = Anything except digit next to digits. (A way to find the next numeric part of your version number)
(\d+) = Captures any digit from 0-9 following non-digit characters.

Demo