当以艺术眼光看程序,寻找程序后面的原理,做到化而不忘
全部博文(57)
分类: Windows平台
2014-06-08 18:26:41
正则表达式,匹配过程可理解如下:
1:匹配内容
学名叫字符组,想匹配什么内容,字母\w,数字\d,符号,是否要转义。是单个匹配还是要使用分组(括号),分组是否要命名。
2:匹配数量
多少次,*+?的使用,具体数量限定{m,n}。
3:匹配位置
是行开头还是结束,^,$,是否是单词边界\b。
4:模式
单行模式还是多行模式
一些小技巧:
1:查找某个字符,假定某个字符在N位,那也就是意味着N位前不能出现,N位出,也就是说,查找字符本质上是查找两部分:非本字符和本字符。所以匹配的内容也有两部分,正则表达式如下:[^某个字符][某个字符]*。注意一下,这里有个隐含字符的现象,表面上是你匹配本字符,实际上还要匹配非本字符。
2:正则表达式又叫最小的编程语言,比如和C相比,C中有Int,char等类型信息,对应到正则表达式中,则就是上面的四点。每个部分都有相应的类型符号,可以认为是像C中的数据类型一样。
比如*+?{m,n},其类型就是数量,[]其类型就是匹配内容,?x(x表示m等模式标志)其类型是匹配模式。可以这样认为:它是通过符号来表示类型的,这个在具体的语言中体现的特别明显。比如,PowerShell,数组是用@(),HashTable用@{}。一般变量用$。权且叫做类型符号化吧。正则表达式匹配的过程就是查找并定位类型的过程。