最近学习正则表达式,留下读书笔记,以备查阅。
作用
- 数据验证,例如验证一串字符串中是都包含手机号码、信用卡号码等;
- 替换文本,例如使用正则表达式来识别文档中的特定文本,完全删除该文本或用其他文本替换;
- 基于模式匹配从字符串中提取子字符串,例如查找文档内或输入域内特定的文本。
语法
- 特殊字符
一些有着特殊含义的字符。
字符 | 描述 |
---|---|
\ | 转义字符 |
^ | 匹配输入字符串的开始位置;取非 |
$ | 匹配输入字符串的结束位置 |
. | 匹配换行符\n之外的任何单字符 |
- 限定符
用来指定正则表达式的一个给定组件必须出现多少次才能满足匹配。
字符 | 描述 |
---|---|
* | 匹配前面的子表达式 零次 或 多次 |
+ | 匹配全面的子表达式 一次 或 多次 |
? | 匹配前面的子表达式 零次 或 一次 |
{n} | 匹配确定的n次(n是一个自然数) |
{n,} | 匹配至少n次(n是一个自然数) |
{n,m} | 匹配至少n次,至多m次(n,m是一个自然数, n <= m) |
元字符
字符 | 描述 |
---|---|
x|y | 匹配x或y。例如:z|food 能匹配“z”或“food”。 |
[xyz] | 字符集合。匹配所包含的任意一个字符。 |
[^xyz] | 负值字符集合。匹配未包含的字符集合。 |
[a-z] | 字符范围。匹配指定范围内的任意字符。 |
[^a-z] | 负值字符范围。匹配任何不在指定范围内的任意字符。 |
\b | 匹配一个单词边界,也就是指单词和空格的位置。 |
\B | 匹配非单词边界,er\B 能匹配 verb 中的 er,但不能匹配 never 中的 er。 |
\d | 匹配一个数字字符。等价于[0-9]. |
\D | 匹配一个非数字字符。 |
运算符优先级
正则表达式从左到右进行计算,并遵循下表优先级顺序(自上而下,从最高到最低)。
运算符 | 描述 |
---|---|
\ | 转义符 |
(), (?:), (?=), [] | 圆括号和方括号 |
*, +, ?, {n}, {n,}, {n,m} | 限定符 |
^, $, \ 任何元字符、任何字符 | 定位点和序列 |
| | 替换,或 操作 |
网友评论