2014-07-01 40 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:您可以使用按位或(更新后的答案)执行此操作。 –

相关问题