正则表达基础入门

之前对正则表达式一直觉得很麻烦就没怎么研究,用的时候大都百度,有些表达式照搬过来也没弄懂意思。然终是一块短板,一日不搞清楚,便一日惴惴不安。遂学习总结如下。


1.元字符

举例:在一篇文章中查找 hi
精确正则查找:\bhi\b
\b 是正则表达式规定的一个特殊代码(元字符),代表单词的开头或者结尾,就是单词的分界处。只匹配一个位置。

如果找的是“hi后面不远处跟着的一个Lucy”,应该使用\bhi\b.*\bLucy\b
.是另一个元字符,匹配“除了换行符以外的任意字符”。
*也是元字符,不过既不是位置也不是字符,而是数量:指定其前边的内容可以连续重复使用任意次,使整个表达式得到匹配。
所以.*连在一起表示:任意数量的不包含换行的字符。

\bhi\b.*\bLucy\b 的意思是:先是一个单词hi,然后是任意个任意字符(但不能换行),最后是Lucy这个单词。

举例:0\d\d-\d\d\d\d\d\d\d\d
表示意思:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字。
\d是个新的元字符,匹配“一位数字(0,1,2,3.........)”
-不是元字符,匹配其本身,“连字符”
另一种简洁写法:0\d{2}-\d{8},"\d"后面的{2}{8}表示前面的\d必须连续重复匹配2次(8次)

\s匹配任意的空白符,包括空格,制表符(tab),换行符,中文全角空格等。
\w匹配"字母或数字或下划线或汉字等"
\ba\w*\b匹配“以字母a开头的单词,先是某个单词开始处(\b),然后是字母a,然后是任意数量的字母或数字,最后是单词结束处(\b)”
\d+匹配"一个或更多连续的数字"。。+匹配重复任意次(可能是0次),而+匹配 重复1次或更多次。
?重复0次或1次

\b\w{6}\b 匹配刚好6个字符的单词。
^元字符匹配字符串的开始。
$元字符匹配字符串的结束。
举例:qq号(5到12位的数字) ^\d{5,12}$
{5,12}表示"重复的次数不能少于5次,也不能多于12次"

2.字符转义

查找元字符本身时,使用\
比如查找-,\-;查找\,\\.

3.字符类

如果要匹配的内容没有被预设出来,只需要在方括号里列出它们就ok了。
[.?!]匹配标点符号“.?!”
举例:\(?0\d{2}[)-]?\d{8},匹配几种电话格式。

4.分枝条件

正则表达式里的分枝条件指如果有好几种规则,如果满足其中任意一种规则都应该当成匹配。
具体用法是用|把不同的规则分隔开。
举例子:
0\d{2}-\d{8}|0\d{3}-\d{7}:匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。

5.反义

查找不属于某个能简单定义的字符类的字符。举例“查找除了数字以外,其他任意字符都行的情况”:\D。。。注意是大写字母
\W:匹配任意不是字母,数字,下划线,汉子的字符
\S:匹配任意不是空白符的字符
\D:匹配任意非数字的字符
\B:匹配不是单词开头或结束的位置
[^x]:匹配除了x以外的任意字符
<a[^>]+>:匹配用尖括号括起来的以a开头的字符串

记录此文是检验自己对正则的掌握程度,也方便以后查阅。还有一些相关的知识,比如后向引用零宽断言等未列出。欲详细了解的童鞋可以去查阅这篇博客:正则表达30分钟入门教程

posted @ 2016-10-19 15:29  谦一  阅读(412)  评论(0编辑  收藏  举报