正则表达式学习笔记与经验总结
以前总是习惯把笔记都写在笔记本上,blog便一直荒废着。现在趁着暑假有几天清闲日子,还是把笔记本上的东西都搬到博客里来吧。顺便温故而知新下——正则表达式。
先来个复杂的:比如如下邮箱,字母开头,可以含数字,字母,点,加减号,以及下划线。 w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
要看懂上面的正则表达式,先学习如下四条规则:
1。^、$为定位符,分别表示开始和结束。如^abc <=> 以abc开头;abc$ <=> 以abc结尾;
2。* : 0个或多个。如 ab* <=> ab{0,} +: 1个或多个。如 ab+ <=> ab{1,}。注意这里只针对单个b,表示b有一个或多个,如果涵括ab,则需要叫一个括号,即(ab)+。 ? : 0个或1个。 如 ab? <=> ab{0,1} | :或者。如( a | b)* <=> a{0,} 或者 b{0,} . : 单字符通配符。不包括n {} : 表示个数或范围。 [] : 只匹配一个单个字符。如[a-zA-Z]表示单个字母
3。重要的特殊元字符,需要记忆,值得记忆。 d : 0-9的单个数字。11位电话号码就表示为 d{11}。 S : 与s相反。 s: 表示单个空格符,含tab键和换行符。 w : 表示字母、数字或下划线的单个字符。 W: 与w相反。 b : 匹配一个边界。如"love" 将匹配成功正则表达式"veb"。
4。用转义来表示特殊字符。如uxxxx表示Unicode编码字符。*表示*号等。 否定符的使用[^],当^进入了[]中时,将失去定位符的含义,和[]组合形成否定符。如[^0-4]表示不包含0,1,2,3,4。
接下来,我们再来看看开头贴出来的那个邮箱地址匹配,看看是不是很简单。 w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 分析: w+:一个或多个字母、数字或下划线。[-+.]w+:以-、+、.为首,接着含一个或多个字母、数字或下划线。*:零个或多个。 @:邮箱必备字符。w+([-.]w+)*:同上分析。.:表示单个.字符。 是不是觉得很简单,没错,正则表达式看起来复杂,实则不难。提供个正则表达式的测试网址:http://tool.chinaz.com/regex/。大家练练手。 最后,贴一些常用的正则表达式匹配。 汉字:^[u4e00-u9fa5]{0,}$ 中国邮政编码:[1-9]d{5}(?!d) (中国邮政编码为6位数字) IP地址:d+.d+.d+.d+ (提取IP地址时有用) 空白行的正则表达式:ns*r (可以用来删除空白行) HTML标记的正则表达式:<(S*?)[^>]*>.*?</1>|<.*? />。。。。。详见http://www.cr173.com/html/19109_all.html。 ?? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |