在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
入门
元字符
\b:元字符,代表着单词的开头或结尾,也就是单词的分界处。
. : 元字符,匹配除了换行符之外的任意字符。
\d:元字符,匹配一个数字。例子:0\d\d-\d\d\d\d\d\d\d\d或者0\d{2}-d{8} 用来匹配电话号码。
\s:匹配任意的空白符。
\w:匹配字母或数字或下划线或汉字等。
^:匹配字符串的开始。
对应匹配字符串的结束。 例子:如果要求你填写的QQ号必须为5位到12位数字时可使用^\\d{5,12}。
字符转义
\:字符转义,使用\.和\*来匹配元字符。
重复
*:*连在一起就意味着任意数量的不包含换行的字符。
+:重复一次或者更多次
?:重复零次或一次
{n}:重复n次
{n,}:重复n次或者更多次
{n,m}:重复n到m次
分支条件
|:把不同的规则分隔开。例子:0\d{2}-\d{8}|0\d{3}-\d{7}。匹配三位区号,8位本地号和思维区号,7位本地号。
分组
():你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数。例如:(\d{1,3}\.){3}\d{1,3} 匹配到1到3位数字加一个英文句号重复3次,最后再加上一个一到三位的数字。
反义
有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义。
\W:匹配任意不是字母,数字,下划线,汉字的字符
\S:匹配任意不是空白符的字符
\D:匹配任意非数字的字符
\B:匹配不是单词开头或结束的位置
[^x]:匹配除了x以外的任意字符