正则表达式都是由正则表达式语言创建的,通常被镶嵌在其他语言内部作为字符串文本解析工具来使用。正则表达式是由普通字符及特殊字符组成的文字模式。
例如:
(1) wo+niu,可以匹配wooniu、woooniu、wooooniu等," + “代表前面的字符必须至少出现一次。
(2) wo * niu,可以匹配wniu、woniu、wooniu等,” * “代表前面的字符可以不出现,也可以出现一次或多次。
(3) wo?niu,可以匹配wniu或者woniu,” ?"代表前面的字符最多只出现一次。
1.普通字符
普通字符包括没有显示指定为元字符的所有可打印和不可打印字符。包括所有大写和小写字母、所有数字、所有标点符号和其他符号。
字符 | 描述 |
---|---|
\cx | 匹配由x指明的控制字符。例如,\cM匹配一个Ctrl+M或回车符。x的值必须为A~ Z或a~ z之一;否则,将c视为一个原义的"c"字符。 |
\f | 匹配一个换页符 |
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\S | 匹配任何非空白字符 |
\s | 匹配任何空白字符 |
\t | 匹配一个制表符 |
\v | 匹配一个垂直制制表符 |
2.特殊字符
所谓特殊字符就是一些含特殊意义的字符。
字符 | 描述 |
---|---|
$ | 匹配输入字符串的结尾位置。要匹配"$"字符本身,应使用\$ |
() | 匹配一个子表达式的开始和结束位置。要匹配"()"字符本身,应使用\(和\) |
* | 匹配前面的子表达式零次或多次。要匹配"*"字符本身,应使用\ * |
+ | 匹配前面的子表达式一次或多次。要匹配"+"字符本身,应使用\ + |
. | 匹配除换行符\n之外的任何单字符。要匹配"."字符本身,应使用\ . |
[ | 标记一个中括号表达式。要匹配"["字符本身,应使用\ [ |
? | 匹配前面的子表达式零次或一次。要匹配"?"字符本身,应使用\ \? |
\ | 将下一个字符标记为特殊字符、原义字符、向后引用或者八进制字符。例如,n匹配字符n,\n匹配换行符,\匹配,而(匹配( |
^ | 匹配输入字符串的开始位置。要匹配"^"字符本身,应使用\ ^ |
{ | 标记限定符表达式的开始。要匹配"{"字符本身,应使用\ { |
| | 指明两项之间的一个选择。要匹配"|"字符本身,应使用\ \ |
3.限定符
用来指定正则表达式的一个给定组件必须出现多少次才能满足匹配。限定符有*、+、?、{n}、{n,}、{n,m}共六种。
字符 | 描述 |
---|---|
* | 匹配前面的子表达式零次或多次。例如,zo*能匹配z以及zoo,*等价于{0,} |
+ | 匹配前面的子表达式一次或多次。例如,zo+能匹配zo以及zoo,但不能匹配z。+等价于{1,} |
? | 匹配前面的子表达式零次或一次。例如,zo?能匹配z以及zo,?等价于{0,1} |
{n} | n是一个非负整数,表示匹配确定的n次。 |
{n,} | n是一个非负整数,表示至少匹配的n次。 |
{n,m} | n和m是均为非负整数,其中 n ≤ m n \le m n≤m表示最少匹配n次且最多匹配m次。注意,逗号和两个数之间不能用空格 |