正则学习

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。工作中不管是处理特殊字符串还是批量处理一些东西时使用正则的情况都非常普遍。不熟悉正则很大情况上降低了自己的工作效率。

常用的元字符

代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\s 匹配任意的空白符
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
\t 制表符,Tab
\r 回车
\n 换行符
\e Escape

eg:一个5到12位的QQ号^\d{5,12}$

限定符

代码 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

eg:Windows\d+匹配Windows后面跟1个或更多数字

反义字符

代码 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意非数字的字符
\D 重复零次或一次
\B 重复n次
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符

eg:<a[^>]+>匹配用尖括号括起来的以a开头的字符串。

字符转义

如果想查询元字符本身的话,可以使用\对元字符进行转义

eg:deerchao\.net匹配deerchao.net

分枝条件

分枝条件指有几种规则,如果满足其中任意一种规则都应该当成匹配,条件之间可以用|隔开

eg:0\d{2}-\d{8}|0\d{3}-\d{7}可以匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(010-12345678),一种是4位区号,7位本地号(0376-2233445)