.NET Regex - 需要匹配字符串进行解析

时间:2010-04-19 10:58:21

标签: .net regex

我是一个正则表达的白痴,从来没有找到一个好的教程(链接欢迎,以及指向交互式VS2010集成编辑器的指针)。

我需要以下面的形式解析字符串:

[a/b]:c/d

a, b: double with "." as possible separator. CAN be empty
c: double with "." as separator
d: integer, positive

即。有效字符串是:

[/]:0.25/2
[-0.5/0.5]:0.05/2
[/0.1]:0.05/2

;)任何人都可以提供帮助吗?

由于

3 个答案:

答案 0 :(得分:3)

^\[(-?\d+\.?\d+?)?/(-?\d+\.?\d+?)?\]:(-?\d+\.?\d+?)/(\d+)$

捕获自己组中的每个数字。

这假设您的double值不包含小数部分是合法的。如果不是,您可以使用

^\[(-?\d+\.\d+)?/(-?\d+\.\d+)?\]:(-?\d+\.\d+)/(\d+)$

答案 1 :(得分:1)

var match = Regex.Match("[-0.5/0.5]:0.05/2", @"\[([\.\-0-9]*)/([\.\-0-9]*)\]:([\.\-0-9]*)/([\.\-0-9]*)");
if (match.Success)
{
    Console.WriteLine(match.Groups[1].Value);
    Console.WriteLine(match.Groups[2].Value);
    Console.WriteLine(match.Groups[3].Value);
    Console.WriteLine(match.Groups[4].Value);
}

答案 2 :(得分:1)

Visual Studio Gallery上有一个正则表达式编辑器:
http://visualstudiogallery.msdn.microsoft.com/en-us/55c24bf1-2636-4f94-831d-28db8505ce00

它并不广为人知,但可以在你的正则表达式中添加空格和注释。这可以使像这样的正则表达式更具可读性。以下是基于Tim Pietzcker第一个答案的示例:

var regex = @"(?x:
    ^                   # Anchor to start of string
    \[                  # [
        (-?\d+\.?\d+?)? # a - double
    /                   # /
        (-?\d+\.?\d+?)? # b - double
    \]                  # ]
    :                   # Literal colon character
        (-?\d+\.?\d+?)  # c - double
    /                   # /
        (\d+)           # d - integer
    $                   # Anchor to end of string
)";