2010-04-19 94 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 
)";