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

时间:2015-03-18 21:47:52

标签: regex f#

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

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

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

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

从另一个SO帖子中获取代码的示例,但在正则表达式模式中出现错误,我将(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#异常提升的更多信息,请访问herehere