正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
1、元字符
正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
2、特殊字符
特别字符 |
描述 |
( ) |
标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和\ ) |
* |
匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。 |
+ |
匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+ |
. |
匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用\ . |
? |
匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \? |
^ |
匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^ |
3、限定符
字符 |
描述 |
( ) |
标记一个子表达式的开始和结束位置 |
+ |
匹配前面的子表达式一次或多次 |
? |
匹配前面的子表达式零次或一次 |
{n} |
n 是一个非负整数,匹配确定的 n 次 |
{n,} |
n 是一个非负整数。至少匹配n 次 |
{n,m} |
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次 |
4、元字符
元字符 |
正则表达式中的写法 |
含义 |
. |
. |
任意一个字符 |
\d |
\\d |
0~9的任意一个数字 |
\D |
\\D |
任意一个非数字字符 |
\s |
\\s |
空白字符,如\t、\n |
\S |
\\S |
非空白字符 |
\w |
\\w |
代表可用作标识符的字符 |
\S |
\\S |
非空白字符 |
\p{Lower} |
\\p{Lower} |
小写字母 |
\p{Upper} |
\\p{Upper} |
大写字符 |
\p{ASCII} |
\\p{ASCII} |
ASCII字符 |
\p{Alpha} |
\\p{Alpha} |
字母字符 |
\p{Digit} |
\\p{Digit} |
十进制数字,即[0~9] |
\p{Alnum} |
\\p{Alnum} |
数字或字母字符 |
\p{Punct} |
\\p{Punct} |
标点符号 |
5、限定符
限定修饰符 |
意义 |
示例 |
? |
0次或1次 |
A? |
* |
0次或多次 |
A* |
+ |
0次或多次 |
A+ |
{n} |
正好出现n次 |
A{n} |
{n,} |
至少出现n次 |
A{3,} |
{n,m} |
出现n到m次 |
A{2,6} |
6、正则表达式的简单例子
^[0-9]+abc$
- ^ 为匹配输入字符串开始的位置;
- [0-9]+匹配多个数字,[0-9]匹配单个数字,+匹配一个或多个;
- abc$匹配字母abc并以abc结尾,$为匹配输入字符串的结束位置;