带有命名正则表达式的F#Bug?

时间:2011-12-11 06:18:07

标签: regex f#

我试图在F#中使用一个名为正则表达式而没有太多运气。移植到C#,它的工作原理。是否有一些我在这里缺少的F#的特性还是一个bug?

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);

2 个答案:

答案 0 :(得分:5)

群组区分大小写。您在F#上有"liveID",在C#上有"liveId"(请注意D)。
在第一个块上,没有名为liveID的组,因此它失败。

答案 1 :(得分:2)

您的群组名称中存在拼写错误:尝试“liveId”而不是“liveID”