F#:检测正则表达式模式中的错误

F#: Detecting errors in regex patterns

我是编程新手,F# 是我的第一门 .NET 语言。

作为初学者的项目,我想编写一个应用程序,要求用户输入正则表达式模式,然后标记任何错误。

我查看了 MSDN 上的正则表达式 API,但似乎没有任何方法可以自动检测正则表达式模式中的任何错误。请更有经验的程序员与我分享他们将如何实现这一目标?

预先感谢您的帮助。

如果您需要检查正则表达式是否编译,只需使用 try-with 块。如果您需要检查正则表达式模式是否与您的输入字符串匹配,请使用 IsMatch().Success。够了。

一个代码示例取自另一个 SO post,但在正则表达式模式中存在错误,我将 (http:\/\/\S+) 替换为 (http:\/\/\S+:

try
    let testString = "http://www.bob.com http://www.b.com http://www.bob.com http://www.bill.com"

    let matches input =
        Regex.Matches(input, "(http:\/\/\S+") 
        |> Seq.cast<Match>
        |> Seq.groupBy (fun m -> m.Value)
        |> Seq.map (fun (value, groups) -> value, (groups |> Seq.length))
with
    | :? System.Exception as ex -> printfn "Exception! %s " (ex.Message); None    

可以找到有关 F# 异常引发的更多信息 here or here