这两天由于作业的原因用C#写了个小程序,苦恼于陌生的函数、规则,苦恼于想写的模式在C#中找不到相应的实现方法。不过在苦恼之外却有两个很让我欣喜的东西,正则表达式和LINQ。
学过编译原理的同学都很熟悉正则表达式,基于正则式的词法语法自动分析程序(LEX、YACC)的强大更是让我记忆犹新。
下面介绍下正则表达式吧。
正则表达式的表达能力等价于正则文法,正则表达式的定义如下:
1.字母表中的任意字母是正则表达式,空串和空集也是正则表达式;
2. 如果r, s是正则表达式,那么r|s, rs, r*, (r)也是正则表达式。
正则表达式可以表示很多模式,如:
\d{2}-\d{5} 一个2位数字,一个连字符以及一个5位数字组成的ID号
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 正浮点数
因此正则式在字符串处理方面有其得天独厚的优势,但是传统的标准C/C++并没有提供这方面的支持,反倒是一些第三方库加入了相应功能。到了C#,正则式被很好的支持和运用了,无论是字符串的匹配、替换,还是分词函数中都能看见它的身影,这无疑为我们处理字符串提供了很大的便捷。
如以下模式就能用于匹配以数字结束并含有小写字母的单词,比我们手写的匹配程序要简单方便许多。
Regex rEndingwithNumbers = new Regex(@"[a-z][0-9]+$", RegexOptions.Compiled);
而LINQ则是我们可以用一种类似数据库查询语句的方式来处理数据。
From, in, where, select, join, on, orderby, group等查询运算符的引入大大简化了一些数据处理程序的编写复杂性。
例如在一个词库中,用一个LINQ查询就可以实现词长筛选,词频统计,按要求排序等一系列功能。
以上皆是本人作为一个菜鸟接触C#几天的感受,理解的比较肤浅,欢迎拍砖。
发表评论
-
TC官方文档翻译03----可扩充字符串API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
2012-07-06 09:52 581/** * 转载请注明出处, 由于个人技术能力有限, 英 ... -
各种视图组件
2012-07-03 13:44 730TabHost包含: 布局器: 上边:一个TabW ... -
给FlexViewer加一个登录
2012-07-02 12:56 638打开index.mxml,修改如下: flex/sp ... -
[Bindable]元数据标签举例
2012-07-02 12:56 665【描述】 现在想从后台的数据库里读取一些Produc ... -
学习组件拖拽
2012-07-02 12:56 712height="323" ... -
Using the Adobe AIR 2 NativeProcess API to create a screen recorder
2012-07-02 12:56 1349With the release of AIR 2, Ad ... -
ExtJs 扩展 笔录1
2012-07-02 12:56 608Ext.layout.SlideLayout.js Ext ... -
整理电脑,整理大脑
2012-07-01 10:31 750电脑硬盘空间不足了,该怎么办呢? 增加硬盘空间,我真 ... -
Android 源码下载编译
2012-07-01 10:31 815很久以前写的,从那个博客搬过来的。 … 一、系 ... -
开发知识总结
2012-07-01 10:31 751总结一下自己在开发上的一些小心得,持续更新,欢迎大家补充! ... -
完整的Flex多文件上传实例
2012-07-01 10:31 436客户端代码:fileUpload.xml--------- ... -
像Youtube一样的flv视频网站制作 使用Flex和PHP创建自己的视频应用
2012-07-01 10:31 753转帖:http://blog.sina ... -
2011年11月01日
2012-06-30 16:52 9882011年11月01日 2011年11月 ... -
[转]Q版格斗游戏《口袋战士NOVA》开发心得[原创]
2012-06-30 16:52 891[转]Q版格斗游戏《口袋战士NOVA》开发心得[原创] 20 ... -
本创:如何才气建制出劣秀的Facebook游戏?
2012-06-30 16:52 807本创:如何才气建制出劣 ... -
中国网络游戏发展历史大全 .网络游戏
2012-06-30 16:52 683中国网络游戏发展历史大全 .网络游戏 2011年07月14日 ...
相关推荐
赠送jar包:calcite-linq4j-1.2.0-incubating.jar; 赠送原API文档:calcite-linq4j-1.2.0-incubating-javadoc.jar; 赠送源代码:calcite-linq4j-1.2.0-incubating-sources.jar; 赠送Maven依赖信息文件:calcite-...
calcite-linq4j-1.2.0-incubating.jar
pro-linq-language-integrated-query-in-c#
Linq方法中比较常用的查询方法SelectMany方法。用法广。资源分享!
包含linq-to-sql、linq-to-xml、linq-to-object等基本查询操作和linq-to-sql的动态查询。
亲测好用,利用c# 的LinqXML技术 使用LINQ技术对XML文件进行读取
jQuery-QueryBuilder 实现定义筛选组
c#Linq操作数组 c#Linq操作数组 c#Linq操作数组
动态Linq查询生成器 dynamic-linq-query-builder是一个小型库,允许任何.Net框架类集合在运行时动态过滤。 功能(v1.2.0) 从任何集合和过滤器组合生成IQueryable 可以根据需要对多个字段进行复杂的分组查询 通过...
LINQ - 运营商 此示例显示了不同用途的联接运算符 LINQ - 分组运算符 此示例显示了不同用途的分组运算符 LINQ - 限制运营商 此示例显示了不同用途的限制运营商。 LINQ - 投影算 此示例显示了不同用途的投影算 LINQ -...
包含linq to xml 、sql等主要基础知识,能对linq技术有所了解
APress - Pro LINQ - Language Integrated Query In C# 2008.pdf
C#关于Linq学习,里面含有经典教程的具体代码,有清晰的教程pdf文件,同时含有数据库,欢迎分享。
java种菜源码Java 中的 101 个 C# LINQ 示例 将端口改写成与 Andriod 兼容的 ...LINQ ...LINQ ...中缺乏正确的类型推断、类型擦除和闭包,使得等效的 Java 源代码特别冗长。 为了提升 Java 开发体验,我们在
java-linq-examples 是 101 个 LINQ 示例的 Java 移植版本。Android 兼容 Java 1.7.此外还有以下语言移植版本:SwiftClojureDart
学习LINQ工具,可以实时编译C#LINQ语句
Linq学习100例(含源代码)101 LINQ Samples Learn how to use LINQ in your applications with these code samples, covering the entire range of LINQ functionality and demonstrating LINQ with SQL, DataSets,...
linq 学习工具 ,C# winform LINQ - Sample Queries
为了进行并排比较,原始C#源代码显示在等效的Clojure翻译之上。 输出显示了运行Clojure示例的控制台输出。 以...结尾的输出说明仅显示部分响应。 使用的 C# 和 Clojure 实用程序的源代码包含在它们使用的第一部分下...