private Regex DataQueryStringParamsReg = new Regex(@"@(?<DataQueryStringParam>[_a-zA-Z0-9_]+)@", RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled);请问这个正则表达式代表什么意思呢?
谢谢!

解决方案 »

  1.   


    "@(?<DataQueryStringParam>[_a-zA-Z0-9_]+)@"——正则应该是这个。
      

  2.   

    算了,还是整体解释一下吧"@(?<DataQueryStringParam>[_a-zA-Z0-9_]+)@" @ 普通字符
    (?<name>Exp) 命名捕获组,把表达式Exp匹配到的内容保存到以“name”命名的组里
    [_a-zA-Z0-9_]+ 匹配由字母、数字、下划线组成的字符串,至少要有一个字符才能匹配成功,这里出现了两个下划线是没必要的整个正则表达式的意思就是取两个@之间的内容后面的三个匹配模式
    RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled
    用在这里完全没意义,属于匹配模式的滥用RegexOptions.Singleline 单行模式,改变小数点“.”的匹配行为,正则表达式中根本就没有出现小数点,这个多余
    RegexOptions.IgnoreCase 忽略大小写,而正则表达式里已经同时包含大小写字母了,这个多余
    RegexOptions.Compiled 预编译,对于这种简单的正则表达式,使用预编译基本上没有任何意义