2010-04-19 50 views
1

我是一个正规的白痴,从来没有找到一个好的教程(链接欢迎,以及一个交互式VS2010集成编辑器的指针)。.NET正则表达式 - 需要匹配字符串解析

我需要在下面的表格解析字符串:

[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
^\[(-?\d+\.?\d+?)?/(-?\d+\.?\d+?)?\]:(-?\d+\.?\d+?)/(\d+)$ 

捕捉自己的组中的每个号码。

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

^\[(-?\d+\.\d+)?/(-?\d+\.\d+)?\]:(-?\d+\.\d+)/(\d+)$ 
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); 
} 
+0

可遗憾的是只能选择一个答案,因为答案;)感谢您的代码示例。 – TomTom 2010-04-19 11:28:36

1

有一个在Visual Studio库正则表达式编辑:
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 
)";