正则表达式的妙用-- 获得数组(转)

简介:


近来在工作上遇到了比较有意思的字符串,如果不用正则表达式去分析会觉得很吃力,如果用了正则表达的分析方法会觉得代码既简洁而有质量。

下面有就讲下过程吧。

现有一串字符经过我处理得到
// 女性频道下面的所有分类
         public  static  readonly  string AllSubSort = "{美容,UN1070801},{瘦身,UN1070802},{首饰,UN1070803},{服饰,UN1070804},{配饰,UN1070805},"
            + "{瑜伽,UN1090102},{居家,UN10709},{装饰,UN1070901},{园艺,UN1070902},{爱情,UN1070106},{夫妻,UN1070101},{婆媳,UN1070102}"
            + ",{育儿,UN10703},{营养,UN1100205},{美食,UN107070204},{药膳,UN110080101},{保健,UN1100304},{心理,UN1100107},{妇科,UN1100507}";

一看你会发现,这个字符串包括键值的对应关系,如何通过键得到值呢,在这里“{}”里面的两者都可以当作键。
如果不用正则你会怎么做呢。
......
现在我用正则来做就非常的简质。
请看代码
  ///   <summary>
        
///  通过分类名称找到分类代码
        
///   </summary>
        
///   <param name="subSortName"> 分类名称 </param>
        
///   <returns> 分类代码 </returns>
         public  static  string FindSubSortCodeByName( string subSortName)
        {
             string strRet = "";
             if (subSortName ==  null)
                 return strRet;
            subSortName = subSortName.Trim();
             string pattern = "{" + subSortName + ",(?<key>[^}]*)}";
            Match match = Regex.Match(AllSubSort, pattern);
             if (match !=  null)
                strRet = match.Groups["key"].Value;
             return strRet;
        }

代码中pattern很有意思,
当subSortName=" 美容 "时,pattern=" {美容,(?<key>[^}]*)} "。
标红的地方为关键,以"()"表示一个Group,"?<key>"中的代码key表示Group的键(当然这这个key是个标志符号),后面表示Group的value,
即可通过 strRet = match.Groups[ " key " ].Value;来获取。

如何获取全部的value呢
  ///   <summary>
        
///  获取所有分类代码以+连接
        
///   </summary>
        
///   <returns> 所有分类代码 </returns>
         public  static  string GetAllSubSortCode()
        {
             string strRet = "";
             string pattern = "{[^,]*,(?<key>[^}]*)}";
            MatchCollection matchs = Regex.Matches(AllSubSort, pattern);
             if (matchs !=  null)
            {
                 foreach (Match match  in matchs)
                {
                     if (match !=  null)
                        strRet += "+" + match.Groups["key"].Value;
                }
            }
             return strRet.Trim('+') ;
        }
道理是相同的,只是pattern有点同。

完整代码下载

测试正则非常好的工具下载



本文转自钢钢博客园博客,原文链接:http://www.cnblogs.com/xugang/archive/2007/12/10/989561.html如需转载请自行联系原作者
相关文章
|
7月前
|
开发者 索引
|
JavaScript 前端开发 C#
JavaScript基础插曲—元素样式,正则表达式,全局模式,提取数组
JavaScript基础插曲—元素样式,正则表达式,全局模式,提取数组
110 0
JavaScript基础插曲—元素样式,正则表达式,全局模式,提取数组
|
1月前
|
编译器 Python
Python正则表达式的7个使用典范(推荐)
Python正则表达式的7个使用典范(推荐)
22 0
|
1月前
|
Python
Python实现正则表达式匹配。
【2月更文挑战第11天】【2月更文挑战第30篇】Python实现正则表达式匹配。
|
1月前
|
Python
请解释Python中的正则表达式以及如何使用它们进行文本处理。
请解释Python中的正则表达式以及如何使用它们进行文本处理。
9 0
|
1月前
|
机器学习/深度学习 Python
请解释Python中的正则表达式是什么?并举例说明其用法。
【2月更文挑战第26天】【2月更文挑战第86篇】请解释Python中的正则表达式是什么?并举例说明其用法。
|
1月前
|
缓存 数据安全/隐私保护 Python
Python快速入门:类、文件操作、正则表达式
Python快速入门:类、文件操作、正则表达式
C4.
|
1月前
|
Python
Python正则表达式
Python正则表达式
C4.
14 1
|
1月前
|
Python
在Python中,如何使用`regex`库进行正则表达式匹配?
在Python中,如何使用`regex`库进行正则表达式匹配?
16 0
|
2月前
|
开发者 Python
Python中的正则表达式:re模块详解与实例
Python中的正则表达式:re模块详解与实例

热门文章

最新文章