标签:
Linux下的一些基本工具,如grep,awk,sed等,都支持正则表达式.一般拿来做简单的正则表达式实践最好不过了.然而正则表达式的王国何其浩瀚,想完全掌握正则表达式的精髓恐怕没有那么简单.很多语言,如Perl,PHP,Java等,都有专门的正则表达式支持.这本书对正则表达式的讲解非常全面和细致,参考这里:Mastering regular expressions
百度给的第一个链接就是这个网站,貌似对正则表达式讲的挺全,传送门-->正则
看几个基本的元字符吧~
# 正则表达式中各符号的含义 表示单词的重复,一般就下面的四个符号, ?*.+ ? # 匹配 0 个或者 1 个字符, ( 0, 1 ) * # 匹配 0 个或者更多的字符,( >= 0 ) . # 匹配 1 个字符 ( == 1) + # 匹配 1 个或更多字符 ( >= 1) {m} # 字符恰好匹配 m 次 {m, n} # 字符次数在 m 和 n 之间 (含) {m,} # 字符次数在 m 或 m 以上 [] # 匹配字符的范围 [^] # 不在该范围内 ^ # 以该字符开头 $ # 以该字符结尾 \d # 匹配一个数字 等价于[0-9] \D # 匹配一个非字符 等价于 [^0-9] \w # 匹配一个字母或数字 等价于[a-zA-Z0-9] \W # 匹配一个非字母或者数字 等价于[^a-zA-Z0-9] \s # 匹配一个换行符 等价于[\n\t\r\f] \S # 匹配一个非换行符 等价于[^\n\t\r\f] \b # 匹配一个单词的开始或者结束
下面我们来分析两个实例,感受一下正则表达式的魅力
// 匹配IP地址 ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)貌似有点长,不过拨开看也就一点点东西, 其中 (2[0-4]\d|25[0-5]|[01]?\d\d?) 如果用 啦啦 表示的话, 那上面的就是 (啦啦\.){3}啦啦.是不是这样子就好懂多了.啦啦这个字符串表示的是,匹配0到255任意一个数字,当然022这个前面带有0的也是合法的.啦啦后面的\.意思就是一个句号,只不过句号在正则表达式里面是一个元字符,只好先转义一下.
再来分析一下啦啦 (2[0-4]\d|25[0-5]|[01]?\d\d?), 其实是由三个字符串,中间有两个 | 符号连接起来的. 2[0-4]\d 和 [25][0-5] 和 [01]?\d\d? 问号表示问好前面的字符可以有一个,也可以没有.
再来看第二个,不过这个我还是一知半解.
匹配电子邮件 \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*其实也都是最简单的应用, 加入我们也用 呵呵 表示 \w+([-+.]\w+)* 那么原来的表达式就变成了 呵呵@呵呵\.呵呵 一看就明显是个电子邮件的格式.
呵呵 表示的是什么意思呢,就是说,一个单词(word), 用元字符(\w)表示, + 表示可以重复至少一次.加上[-+.]三种符号的任意一个,星号表示小括号里的,可以重复任意次.
后面的有点复杂了,目前还是浅尝辄止为妙.
标签:
原文地址:http://blog.csdn.net/zhangxb35/article/details/42367069