上大学的时候老师也讲过正则表达式,但是是一扫而过,我当时也是吓晕了,这种东西是正常人类看的懂的么?
其实,正则表达式是看的懂的,但是写却实在很难写出来。
今天看了这篇文章,结合例子非常生动http://deerchao.net/tutorials/regex/regex.htm,给我看下去的勇气,不过我只看到反义,接下去还是不敢看。。
主要的内容是里面的
1.元字符
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束 (有些正则表达式处理工具还有一个处理多行的选项。如果选中了这个选项,^和$的意义就变成了匹配行的开始处和结束处。)
2.字符转义
如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你 应该使用\.和\*。当然,要查找\本身,你也得用\\.
例如:deerchao\.net匹配deerchao.net,C:\\Windows匹配C:\Windows。
3.重复
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
4.分支条件
5.分组
但如果想要重复多个字符又该怎么办?你可以用小括号来指定子表达式(也叫做分组)
如果能使用算术比较的话,或许能简单地解决这个问题,但是正则表达式中并不提供关于数学的任何功能,所以只能使用冗长的分组,选择,字符类来描述一个正确的IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。
6.集合
集合就是上面那个式子中,中括号括中的范围。
元字符定义了正则表达式最基本的语法,字符转义解决查询元字符的方式,而重复和分组则是帮助解决精简正则表达式,不用写一堆的元字符
而分支条件说白了就是或||,下面的反义我也看了下,也还好。在下面我就晕了,以后再看吧。
集合也是挺重要的,最典型的就是[a-z0-9A-Z_]这个了吧。