2015-03-18 23 views
0

我是編程新手,F#是我的第一個.NET語言。F#:檢測正則表達式模式中的錯誤

作爲一個初學者的項目,我想編寫一個應用程序,要求用戶輸入正則表達式模式,然後標記任何錯誤。

我已經瀏覽了MSDN上的Regex API,但似乎沒有任何方法可以自動檢測正則表達式模式中的任何錯誤。更多有經驗的程序員會和我分享他們如何去完成這個任務嗎?

非常感謝您的幫助。

回答

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

+0

實際上它是在F#中用''嘗試'...'(https://msdn.microsoft.com/en-us/library/dd233194.aspx),但是否則這個答案是正確的,沒有什麼像' 'Regex'類中的TryParse'。如果模式不正確,你會得到'ArgumentException'。 – 2015-03-18 22:05:07

+0

@LucasTrzesniewski:對不起,嘗試着抓住,替換並添加了一個鏈接。 – 2015-03-18 22:08:47

+0

謝謝,@stribizhev。由於我仍然不熟悉F#,能否向我提供一個如何編寫try-with塊的例子?謝謝。 – 2015-03-19 08:31:09