摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace PascalTriangle{ class Program { static void Main(string[] args) { PT(new int[1]{1}); } static int[] PT(int[]... 阅读全文
posted @ 2010-12-08 18:52 番茄零乱 阅读(272) 评论(1) 推荐(0) 编辑
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace NineGrid{ class Program { static void Main(string[] args) { Grid(3); } static void Grid(int n) { int[,... 阅读全文
posted @ 2010-12-08 18:51 番茄零乱 阅读(694) 评论(0) 推荐(0) 编辑
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Thursday{ class Program { static void Main(string[] args) { Console.WriteLine(Thursday(2010, 2, 10)); } //蔡勒... 阅读全文
posted @ 2010-12-08 18:49 番茄零乱 阅读(332) 评论(0) 推荐(0) 编辑
摘要: //------------------------------------------------------------------------------------/* * 程序名称: * 功能简介: * 制作:番茄零乱 * 日期: 2010-10-16 * 代码量: *///--------------------------------------------------------... 阅读全文
posted @ 2010-12-08 18:48 番茄零乱 阅读(401) 评论(1) 推荐(0) 编辑
摘要: 1概述这或许会是一个让人迷惑,甚至感到混乱的话题,但也正因为如此,才有了讨论的必要。在正则中,一些具有特殊意义的字符,或是字符序列,被称作元字符,如“?”表示被修饰的子表达式匹配0次或1次,“(?i)”表示忽略大小写的匹配模式等等。而当这些元字符被要求匹配其本身时,就要进行转义处理了。不同的语言或应用场景下,正则定义方式、元字符出现的位置不同,转义的方式也是林林总总,不一而同。2.NET正则中的字符转义2.1.NET正则中的转义符绝大多数语言中,“\”都被作为转义符,用来转义一些具有特殊意义的字符或字符序列,比如“\n”表示换行,“\t”表示水平制表符等。而这样的转义,应用到正则中,又会有一些 阅读全文
posted @ 2010-12-08 18:38 番茄零乱 阅读(778) 评论(0) 推荐(0) 编辑
摘要: 1问题引出前几天在CSDN论坛遇到这样一个问题:var str="8912341253789";需要将这个字符串中的重复的数字给去掉,也就是结果89123457。首先需要说明的是,这种需求并不适合用正则来实现,至少,正则不是最好的实现方式。这个问题本身不是本文讨论的重点,本文所要讨论的,主要是由这一问题的解决方案而引出的另一个正则匹配原理问题。先看一下针对这一问题本身给出的解决方案。stringstr ="8912341253789";Regexreg =newRegex(@"((\d)\d*?)\2");while(str != (str = reg.Replace(str,"$1"))) 阅读全文
posted @ 2010-12-08 18:37 番茄零乱 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 1问题引出前几天在CSDN论坛遇到这样一个问题。我要通过正则分别取出下面font color="#008000"与/font之间的字符串1、在font color="#008000"与/font之间的字符串是没法固定的,是随机自动生成的2、其中font color="#008000"与/font的数量也是没法固定的,也是随机自动生成的font color="#008000" **这里是不固定的字符串1 ** /fontfont color="#008000" **这里是不固定的字符串2 ** /fontfont color="#008000" **这 阅读全文
posted @ 2010-12-08 18:36 番茄零乱 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 1概述贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。非贪婪模式只被部分NFA引擎所支持。属于贪婪模式的量词,也叫做匹配优先量词,包括:“{m,n}”、“{m,}”、“?”、“*”和“+”。在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括:“{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。从正则语法的角度来讲,被匹配优先量词修饰的子表达式使用的就是贪婪模式,如“(Expression)+”;被忽略优先 阅读全文
posted @ 2010-12-08 18:35 番茄零乱 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 非捕获组:(?:Expression)接触正则表达式不久的人,通常都会对非捕获比较迷惑,为什么要有非捕获组?作用是什么?应该在什么场景下使用?说到非捕获组,首先要了解什么是捕获组,详细内容参考正则基础之——捕获组(capture group)。1、为什么要有非捕获组一旦使用了“()”,就会默认为是普通捕获组,从而将“()”内表达式匹配的内容捕获到组里。但是有些情况下,不得不用“()”,但并不关心“()”中匹配的内容是什么,后面也不会引用捕获到的内容,这带来了一个副作用,记录这些捕获组就会占用内存,降低匹配效率。设计非捕获组的目的就是为了抵消这种副作用。只进行分组,并不将子表达式匹配到的内容捕获 阅读全文
posted @ 2010-12-08 18:34 番茄零乱 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 1概述首先需要说明的一点,无论是Winform,还是Webform,都有很成熟的日历控件,无论从易用性还是可扩展性上看,日期的选择和校验还是用日历控件来实现比较好。前几天在CSDN多个版块看到需要日期正则的帖子,所以整理了这篇文章,和大家一起讨论交流,如有遗漏或错误的地方,还请大家指正。日期正则一般是对格式有要求,且数据不是直接由用户输入时使用。因应用场景的不同,写出的正则也不同,复杂程度也自然不同。正则的书写需要根据具体情况具体分析,一个基本原则就是:只写合适的,不写复杂的。对于日期提取,只要能与非日期区分开,写最简单的正则即可,如\d{4}-\d{2}-\d{2}如果可以在源字符串中唯一定 阅读全文
posted @ 2010-12-08 18:33 番茄零乱 阅读(490) 评论(0) 推荐(0) 编辑
摘要: 环视(Lookaround)1环视基础环视只进行子表达式的匹配,不占有字符,匹配到的内容不保存到最终的匹配结果,是零宽度的。环视匹配的最终结果就是一个位置。环视的作用相当于对所在位置加了一个附加条件,只有满足这个条件,环视子表达式才能匹配成功。环视按照方向划分有顺序和逆序两种,按照是否匹配有肯定和否定两种,组合起来就有四种环视。顺序环视相当于在当前位置右侧附加一个条件,而逆序环视相当于在当前位置左侧附加一个条件。表达式说明(?=Expression)逆序肯定环视,表示所在位置左侧能够匹配Expression(?!Expression)逆序否定环视,表示所在位置左侧不能匹配Expressio 阅读全文
posted @ 2010-12-08 18:32 番茄零乱 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 1概述“\b”匹配单词边界,不匹配任何字符。“\b”匹配的只是一个位置,这个位置的一侧是构成单词的字符,另一侧为非单词字符、字符串的开始或结束位置。“\b”是零宽度的。基本上所有的资料里都会说“\b”是单词边界,但是关于“单词”的范围却是少有提及。通常情况下,正则表达式中所谓的“单词”,就是由“\w”所定义的字符所组成的子串。“\b”表示所在位置的一侧为单词字符,另一侧为非单词字符、字符串的开始或结束位置,也就相当于(?!\w)(?=\w)|(?=\w)(?!\w)思考:以下写法为什么不等价于“\b”(?=\W)(?=\w)|(?=\w)(?=\W)2\w的范围即然涉及到“\w”,那就 阅读全文
posted @ 2010-12-08 18:32 番茄零乱 阅读(150) 评论(0) 推荐(0) 编辑
摘要: NFA引擎匹配原理1为什么要了解引擎匹配原理一个个音符杂乱无章的组合在一起,弹奏出的或许就是噪音,同样的音符经过作曲家的手,就可以谱出非常动听的乐曲,一个演奏者同样可以照着乐谱奏出动听的乐曲,但他/她或许不知道该如何去改变音符的组合,使得乐曲更动听。作为正则的使用者也一样,不懂正则引擎原理的情况下,同样可以写出满足需求的正则,但是不知道原理,却很难写出高效且没有隐患的正则。所以对于经常使用正则,或是有兴趣深入学习正则的人,还是有必要了解一下正则引擎的匹配原理的。2正则表达式引擎正则引擎大体上可分为不同的两类:DFA和NFA,而NFA又基本上可以分为传统型NFA和POSIX NFA。DFADet 阅读全文
posted @ 2010-12-08 18:31 番茄零乱 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 小数点可以匹配除了换行符“\n”以外的任意一个字符一些细节对于使用传统NFA引擎的大多数语言,如Java,.NET来说,“.”的匹配范围是这样的。但是对于JavaScript来说有些特殊,由于各浏览器的解析引擎不同,“.”的匹配范围也有所不同,对于Trident内核的浏览器,如IE来说,“.”同样是匹配除了换行符“\n”以外的任意一个字符,但是对于其它内核的浏览器,如Firefox、Opera、Chrome来说,“.”是匹配除了回车符“\r”和换行符“\n”以外的任意一个字符。测试scripttype="text/javascript"document.write(/./.test("\r 阅读全文
posted @ 2010-12-08 18:29 番茄零乱 阅读(255) 评论(0) 推荐(0) 编辑