正则表达式基础篇
正则表达式的函数库:
1. PCRE,与Perl语言兼容的正则表达式函数。
2. POSIX。
【语法规则】
一.原子:
原子是正则表达式的最基本的组成单位,每个模式中至少包含一个原子。原子是由所有未显示指定为元字符的打印和非打印字符组成,
1) 普通字符作为原子
包括大写小写字母,所有的数字。
2) 一些特殊字符和元字符作为原子
有特殊意义的字符可以使用/转义。
3) 一些非打印字符作为原子
非打印字符就是在字符串中的格式控制符号,不可显示的。
正则表达式中常见的非打印字符
原子字符 |
含义描述 |
\f |
匹配一个换页符 |
\n |
匹配一个换行符 |
\r |
匹配一个回车符 |
\t |
匹配一个制表符 |
\v |
匹配一个垂直制表符 |
注意:
‘/\n/’—在windows系统中匹配字符串中是否有回车出现。
‘/\r\n/’—在Linux系统中用于匹配字符串中是否有回车。
4) 使用通用字符类型作为原子
正则表达式中常见的通用字符类型
原子字符 |
含义描述 |
\d |
匹配任意一个十进制数字等价于[0-9] |
\D |
匹配任意一个除十进制数字以外的数字,等价于[^0-9] |
\s |
匹配任意一个空白字符,等价于[\f\n\r\t\v] |
\S |
匹配除空白字符以外的任意一个字符,等价于[^\f\n\r\t\v] |
\w |
匹配任意一个数字,字母或下划线 等价于[0-9a-zA-Z] |
\W |
匹配除数字,字母或下划线以外的任意字符,等价于[^0-9a-zA-Z] |
5) 自定义原子表([])作为原子
使用原子表可以定义一组彼此地位平等的原子,例如:
‘/[ja]sp/’ –可以匹配asp和jsp两种。
二.元字符
所谓元字符就是用于构建正则表达式的具有特殊含义的字符,例如:’*’,’、’,’+’,’?’等。
元字符不能单独出现,是用来修饰原子的,可使用\进行转义,使其失去特殊意义。
正则表达式的元字符
元字符 |
含义描述 |
* |
匹配0次,1次或多次其前的原子 |
+ |
匹配1次或多次其前的原子 |
? |
匹配0次或1次其前的原子 |
. |
匹配除了换行符外的任意字符 |
| |
匹配两个或多个分支 |
{n} |
其前面的原子恰好出现n次 |
{n,} |
其前面的原子出现至少n次 |
{n,m} |
其前面的原子出现至少n次,最多m次 |
^或\A |
匹配字符串开始的位置 |
$或\Z |
匹配输入字符串的结束位置 |
\b |
匹配单词的边界 |
\B |
匹配除单词边界以外的部分 |
[] |
匹配方括号中指定的任意一个原子 |
[^] |
匹配除方括号中的原子以外的任意一个字符 |
() |
匹配其整体为一个原子,即模式单元,可以理解为多个单个原子组成的大原子 |
1. 限定符
限定符用来指定正则表达式的一个给定原子必须要出现多少次才能满足匹配。有“*”,“+”,“?”,“{n}”,“{n,}”,“{n,m}”六种限定符,他们之间主要的区别就是重复匹配的次数不同。
2. 边界限制
用来限定字符串或单词的边界范围,以获得更准确的匹配结果。元字符“^和$分别指字符串的开始和结束”,而“\b”用于描述字符串中每个单词的前或后界。
3. 句号
.可匹配目标中的任意一个字符,包括不可打印字符。
4. 模式选择符(|)
“|”选择符优先级最低,用来分隔多选一模式。
5. 模式单元
使用元字符“()”将多个原子组成大的原子,当作一个独立的单元使用 。
三.模式修正符
模式修正符号:
模式修正符号 |
功能描述 |
i |
在和模式匹配时不区分大小写 |
x |
模式中的空白忽略不计,除非被转义 |