代码之家  ›  专栏  ›  技术社区  ›  TomTom

.NET正则表达式-需要匹配字符串进行分析

  •  1
  • TomTom  · 技术社区  · 16 年前

    我是一个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 回复  |  直到 16 年前
        1
  •  3
  •   Tim Pietzcker    16 年前
    ^\[(-?\d+\.?\d+?)?/(-?\d+\.?\d+?)?\]:(-?\d+\.?\d+?)/(\d+)$
    

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

    ^\[(-?\d+\.\d+)?/(-?\d+\.\d+)?\]:(-?\d+\.\d+)/(\d+)$
    
        2
  •  1
  •   Darin Dimitrov    16 年前
    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);
    }
    
        3
  •  1
  •   Community Mohan Dere    9 年前

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

    它并不广为人知,但是可以在regex中添加空格和注释。这可以使这样的正则表达式更具可读性。下面是一个基于 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
    )";