2014-07-01 71 views
2

我有這樣的代碼>正則表達式匹配區分大小寫

Dim match = Regex.Match(text.ToLower(), "(?<=[get|post])\s(?<Path>/.*)\shttp/1\.1.*?host:\s(?<Host>[A-Za-z0-9\-\.]*)", RegexOptions.Singleline) 

所以當我不匹配它給我的網址全部小寫

所以我刪除(ToLower將)命令,但它不匹配時我刪除它!

你能給我這樣的正則表達式代碼,所以當我刪除(ToLower)命令它匹配。

+1

只需使用沿着側RegexOptions.IgnoreCase您SINGLELINE選項 –

回答

3

的構造提供了這樣的方法:

public Regex(string pattern,RegexOptions options) 

隨着項目之一RegexOptions

RegexOptions.IgnoreCase 

你已經在使用一個RegexOptions,但RegexOptions[Flags]枚舉:您可以使用按位或運算符(|)一次使用多個選項:

Dim match = Regex.Match(text, "<pattern>", RegexOptions.Singleline | RegexOptions.IgnoreCase) 

的優點是,該情況下,在正則表達式進行評價。 A ToLower命令將運行在字符串上。對於長字符串,這將意味着代碼運行兩次。

+0

我MAED像這樣 點心匹配= Regex.Match(文字,「(<= [獲取|發表]?)\ S( /.*) \ shttp/1 \ .1。*?host:\ s(? [A-Za-z0-9 \ - \。] *)「,RegexOptions.Singleline和RegexOptions.IgnoreCase) 仍然沒有匹配 – user3793707

+0

爲什麼代碼會以兩倍的時間運行? –

+0

@ user3793707:您可以使用按位或(更新後的答案)執行此操作。 –

相關問題