0
我是編程新手,F#是我的第一個.NET語言。F#:檢測正則表達式模式中的錯誤
作爲一個初學者的項目,我想編寫一個應用程序,要求用戶輸入正則表達式模式,然後標記任何錯誤。
我已經瀏覽了MSDN上的Regex API,但似乎沒有任何方法可以自動檢測正則表達式模式中的任何錯誤。更多有經驗的程序員會和我分享他們如何去完成這個任務嗎?
非常感謝您的幫助。
我是編程新手,F#是我的第一個.NET語言。F#:檢測正則表達式模式中的錯誤
作爲一個初學者的項目,我想編寫一個應用程序,要求用戶輸入正則表達式模式,然後標記任何錯誤。
我已經瀏覽了MSDN上的Regex API,但似乎沒有任何方法可以自動檢測正則表達式模式中的任何錯誤。更多有經驗的程序員會和我分享他們如何去完成這個任務嗎?
非常感謝您的幫助。
如果你需要檢查一個正則表達式是否編譯,只需使用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#中用''嘗試'...'(https://msdn.microsoft.com/en-us/library/dd233194.aspx),但是否則這個答案是正確的,沒有什麼像' 'Regex'類中的TryParse'。如果模式不正確,你會得到'ArgumentException'。 – 2015-03-18 22:05:07
@LucasTrzesniewski:對不起,嘗試着抓住,替換並添加了一個鏈接。 – 2015-03-18 22:08:47
謝謝,@stribizhev。由於我仍然不熟悉F#,能否向我提供一個如何編寫try-with塊的例子?謝謝。 – 2015-03-19 08:31:09