日期:2014-05-17  浏览次数:20583 次

正则表达式 帮忙看下
C# code


 string[] strs = css.Split('|');
            foreach (string str in strs)
            {
                if (str.Trim() == "") continue;
                Regex reg = new Regex(@"^(?<key>\w+)\{(?<val>.*?)\}$", RegexOptions.IgnoreCase);
                Match m = reg.Match(str.Trim().ToLower());
                //if (m.Success)
                //{
                    string key = m.Groups["key"].Value;
                    string val = (m.Groups["val"].Value.Trim());
                   ...
                   ...
                   ....



主要是想问 Regex reg = new Regex(@"^(?<key>\w+)\{(?<val>.*?)\}$", RegexOptions.IgnoreCase);
这里的正则是什么意思


注: 上面代码只是一部分, 变量css是个很长的字符串

------解决方案--------------------
看不懂
------解决方案--------------------
类似如下格式的,当然当且仅当开头结尾符合时才有效
C# code
 string tempStr = @"关键字{值}";
                string pattern = @"^(?<key>\w+)\{(?<val>.*?)\}$";
                foreach (Match m in Regex.Matches(tempStr, pattern))
                {
                    //循环输出
                    string key = m.Groups["key"].Value;//关键字
                    string val = m.Groups["val"].Value;//值
                }

------解决方案--------------------
^表示匹配一个表达式的开始,$表示结束。。<key>在正则表达式中五特殊意义,也就是说这个在要匹配的字符串中必须有这个。\w表示[A-Za-z0-9_]即大写的A到大写的Z和小写的a-z还有0-9或者下划线(_)中的任意一个字符。但是这个段表达式被放在(?)内部,也就是说这个是可有可无的。\{\}表示该字符必须要有内部同前面的一样!
------解决方案--------------------
探讨

^表示匹配一个表达式的开始,$表示结束。。<key>在正则表达式中五特殊意义,也就是说这个在要匹配的字符串中必须有这个。\w表示[A-Za-z0-9_]即大写的A到大写的Z和小写的a-z还有0-9或者下划线(_)中的任意一个字符。但是这个段表达式被放在(?)内部,也就是说这个是可有可无的。\{\}表示该字符必须要有内部同前面的一样!

------解决方案--------------------
<key>和<val> key和val 确实可以任意命名【符合命名规则】

但是下面的 key和val 必须和上面对应起来
//循环输出
 string key = m.Groups["key"].Value;//关键字
string val = m.Groups["val"].Value;//值