Chinaunix首页 | 论坛 | 博客
  • 博客访问: 408768
  • 博文数量: 57
  • 博客积分: 193
  • 博客等级: 入伍新兵
  • 技术积分: 1192
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-13 14:37
个人简介

当以艺术眼光看程序,寻找程序后面的原理,做到化而不忘

文章分类

全部博文(57)

文章存档

2017年(5)

2015年(7)

2014年(27)

2013年(18)

我的朋友

分类: Windows平台

2014-06-08 18:26:41

正则表达式,匹配过程可理解如下:

1:匹配内容

学名叫字符组,想匹配什么内容,字母\w,数字\d,符号,是否要转义。是单个匹配还是要使用分组(括号),分组是否要命名。

2:匹配数量

多少次,*+?的使用,具体数量限定{m,n}。

3:匹配位置

是行开头还是结束,^$,是否是单词边界\b

4:模式

单行模式还是多行模式

一些小技巧:

1:查找某个字符,假定某个字符在N位,那也就是意味着N位前不能出现,N位出,也就是说,查找字符本质上是查找两部分:非本字符和本字符。所以匹配的内容也有两部分,正则表达式如下:[^某个字符][某个字符]*。注意一下,这里有个隐含字符的现象,表面上是你匹配本字符,实际上还要匹配非本字符。

2:正则表达式又叫最小的编程语言,比如和C相比,C中有Intchar等类型信息,对应到正则表达式中,则就是上面的四点。每个部分都有相应的类型符号,可以认为是像C中的数据类型一样。

比如*+?{m,n},其类型就是数量,[]其类型就是匹配内容,?x(x表示m等模式标志)其类型是匹配模式。可以这样认为:它是通过符号来表示类型的,这个在具体的语言中体现的特别明显。比如,PowerShell,数组是用@()HashTable@{}。一般变量用$。权且叫做类型符号化吧。正则表达式匹配的过程就是查找并定位类型的过程。

阅读(1555) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~