2011-12-11 21 views
0

我試圖得到一個在F#中工作的命名正則表達式,但沒有多少運氣。移植到C#,它的工作原理。 F#有一些特殊性,我在這裏失蹤或者是一個錯誤?命名正則表達式的F#錯誤?

F#

open System.Text.RegularExpressions;; 
let regex = new Regex("(?<liveId>WindowsLiveID)|(?<facebook>Facebook)", RegexOptions.Compiled ||| RegexOptions.IgnoreCase);; 
let m = regex.Matches("ImWindowsLiveIDOK");; 
m.[0].Groups.["liveID"].Success;; 

C#

var regex = new Regex("(?<liveId>WindowsLiveID)|(?<facebook>Facebook)", RegexOptions.Compiled | RegexOptions.IgnoreCase); 
var match = regex.Matches("ImWindowsLiveIDOK"); 
Console.WriteLine(match[0].Groups["liveId"].Success); 

回答

5

組是大小寫敏感的。您在F#上有"liveID",在C#上有"liveId"(請注意D)。
在第一個塊上,沒有稱爲liveID的組,因此它失敗。

+0

哇這麼簡單的錯誤。謝謝你的時間 – Dylan

2

你的組名有拼寫錯誤:嘗試使用「liveId」而不是「liveID」