介绍
正则表达式提供强大的查找和替换功能,绝大部分语言(C#、Python、Java等)及大多数工具(Notepad++、VsCode、Vs等)都提供内部支持。
分类
- 单字符匹配(Single Match):用来匹配单个字符;
- 字符集匹配(Sets Match):用来匹配多个字符;
- 特殊字符匹配(Special Match):此处代指转义字符;
- 空白字符匹配(Whitespace Match):包含换行符、制表符等;
- 字符类型匹配(Type Match):用来匹配字母、数字、空白字符等;
- 重复匹配(Repeat Match):用来匹配零次、一次、多次等;
- 位置匹配(Position Match):用来匹配字母、字符边界位置;
- 子表达式匹配高级(Subexpression Match):用来提供分组匹配;
- 反向引用匹配高级(Backreference Match):同时搭配子表达式匹配,可提供强大的替换功能;
- 前后匹配高级(Lookaround Match):用来向前匹配和向后匹配;
- 条件匹配高级(Condition Match):一般搭配反向引用匹配和前后匹配来使用。
元字符速览表
| 类别 |
元字符 |
备注 |
说明 |
| 单字符 |
. |
|
匹配单个任意字符 |
| 字符集 |
[] |
|
匹配多个字符中的一个 |
|
[-] |
|
匹配字符范围中的一个 |
|
[^] |
|
匹配除当前字符集以外的字符 |
| 特殊 |
\ |
|
用于转义其他元字符 |
| 空白 |
[\b] |
|
退格键(Backspace) |
|
\f |
|
换页键(Form feed) |
|
\n |
|
换行(Line feed) |
|
\r |
|
回车(Carriage return) |
|
\t |
|
水平制表符(Tab) |
|
\v |
|
垂直制表符(Vertical tab) |
| 类型 |
\d |
[0-9] |
匹配任何数字字符 |
|
\D |
[^0-9] |
匹配任何非数字字符 |
|
\w |
[a-zA-Z0-9_] |
匹配任何字母、数字、下划线 |
|
\W |
[^a-zA-Z0-9_] |
匹配字母、数字、下划线以外的字符 |
|
\s |
[\f\n\r\t\v] |
匹配任何空白字符 |
|
\S |
[^\f\n\r\t\v] |
匹配任何非空白字符 |
|
\x |
|
匹配十六进制值对应的ASCII字符 |
|
\0 |
|
匹配八进制值对应的ASCII字符 |
| 重复 |
+ |
|
匹配一次或多次字符 |
|
* |
|
匹配零次或多次字符 |
|
? |
|
匹配零次或一次字符 |
|
{n} |
|
确定次数匹配 |
|
{n1,n2} |
|
次数范围匹配 |
|
{n,} |
|
最小次数匹配 |
|
+? |
|
匹配一个或多个字符(懒惰) |
|
*? |
|
匹配零个或多个字符(懒惰) |
|
{n,}? |
|
次数范围匹配(懒惰) |
| 位置 |
\b |
|
匹配单词开始或者结束位置 |
|
^ |
|
匹配字符串开始位置 |
|
$ |
|
匹配字符串结束位置 |
|
(?m) |
部分支持 |
置于开始处,代表支持匹配多行 |
| 子表达式 |
() |
|
用于成组匹配 |
| 反向引用 |
\n $n |
平台间格式有差异 |
用于引用第n项子表达式,索引从1开始 |
|
\E |
替换时用 |
作为\L或者\U的终止符 |
|
\l |
替换时用 |
下一个字符转换成小写 |
|
\L |
替换时用 |
下一个字符至\E转换成小写 |
|
\u |
替换时用 |
下一个字符转换成大写 |
|
\U |
替换时用 |
下一个字符至\E转换成大写 |
| 前后 |
(?=) |
不包括匹配字符 |
根据匹配字符向前查找内容 |
|
(?<=) |
部分支持 |
根据匹配字符向后查找内容 |
|
(?!) |
|
根据非匹配字符向前查找内容 |
|
(?<!) |
部分支持 |
根据非匹配字符向后查找内容 |
| 条件 |
(?(backref)true) |
|
反向引用条件匹配 |
|
(?(look)true) |
|
前后条件匹配 |
参考链接
- 学习正则表达式书籍;
- 在线正则表达式工具网站。
来源:https://www.cnblogs.com/monkeyhua/p/19762115 |