从c#中的版本中提取主要版本

时间:2014-01-28 04:43:40

标签: c# regex split

我有一个像

这样的字符串
myString = "some (numbers) \string \stringwithversion 12.3.45";

示例字符串

C:\Program Files (x86)\Product\Product Edition 12.3.45

我需要输出12作为输出

它想到了用空格拆分字符串并再次用空格拆分结果并得到第一个;

myString.Split(' ').Last().Split('.').First();

虽然我已经看到了正则表达式匹配和从群组中获取的东西[我不明白]。

最好从字符串中获取主要版本吗?

1 个答案:

答案 0 :(得分:2)

正则表达式:

[^0-9]*([^\.]*)\..*

解释:

  1. [^0-9]*:找到0个或更多不是数字的字符。放弃所有这些。
  2. [^\.]*:找到0个或更多不是句点的字符。
  3. ([^\.]*):捕获这些字符(即您可以将它们分配给变量$1)。
  4. (注意:我假设字符串中的唯一数字来自版本!)

    代码:

    string strRegex = @"[^0-9]*([^\.]*)\..*";
    Regex myRegex = new Regex(strRegex, RegexOptions.Multiline);
    string strTargetString = @"some (numbers) \string \stringwithversion 12.3.45" + "\n";
    string strReplace = @"$1";
    
    return myRegex.Replace(strTargetString, strReplace);
    

    您可以对其进行测试here