摘要:
Notepad++正则表达式符号大全包含11类常用语法:基础符号(.^$+?等)、预定义字符类(\d\w\s等)、锚点(\b\B)、量词({n,m})、分组引用(()$1)、字符集合([])、转义字符(.)、断言((?=))、换行符(\n\r)、非贪婪模式(?+?)和特殊标记((?i))。每个符号均配有功能说明和示例,如^匹配行首、\d匹配数字、.*?最短匹配等。特别说明Notepad++行模式特点,替换用$1引用分组,断言零宽度等特性。文档按逻辑分区排版,全面覆盖从基础到高级的正则用法,适合快速查询和深入
下面是Notepad++ 正则表达式符号说明(全量整理版),已整合逻辑与表达,并保持分区排版清晰、内容全面且每项带详细示例:
Notepad++ 正则表达式符号与用法大全
一、基础符号(最常用)
| 符号 | 含义/功能 | 示例 | 说明/结果 |
|---|---|---|---|
. | 匹配除换行外任意单个字符 | a.c | 匹配abc、axc、a_c等 |
^ | 匹配行首 | ^abc | 匹配以abc开头的行 |
$ | 匹配行尾 | abc$ | 匹配以abc结尾的行 |
* | 前一项重复0次或多次 | ab*c | 匹配ac、abc、abbc、abbbc等 |
+ | 前一项重复1次或多次 | ab+c | 匹配abc、abbc、abbbc,不匹配ac |
? | 前一项重复0次或1次 | ab?c | 匹配ac、abc |
{n} | 前一项重复n次 | a{3} | 匹配aaa |
{n,} | 前一项至少重复n次 | a{2,} | 匹配aa、aaa、aaaa等 |
{n,m} | 前一项重复n到m次 | a{2,4} | 匹配aa、aaa、aaaa,不匹配a或aaaaa |
| ` | ` | 逻辑或,匹配左边或右边内容 | `cat |
() | 分组 | (abc)+ | 匹配abc、abcabc |
[] | 匹配括号内任一字符 | [aeiou] | 匹配任一元音字母 |
[^] | 匹配不在括号内的任一字符 | [^0-9] | 匹配非数字字符 |
\ | 转义特殊字符或引出特殊含义 | \. | 匹配.本身 |
例外用法:
[-]表示“-”本身,如[a\-z]仅匹配a、-、z(不代表区间)。
二、预定义字符类(常用速查)
| 符号 | 含义/功能 | 示例 | 说明/结果 |
|---|---|---|---|
\d | 匹配任一数字(等价于[0-9]) | \d+ | 匹配数字串,如12345 |
\D | 匹配非数字(等价于[^0-9]) | \D+ | 匹配非数字,如abc |
\w | 匹配字母/数字/下划线(等价于[A-Za-z0-9_]) | \w+ | 匹配单词、变量名,如word_123 |
\W | 匹配非字母/数字/下划线 | \W+ | 匹配标点或空格 |
\s | 匹配空白字符(空格、Tab、换行等) | \s+ | 匹配空格、Tab等 |
\S | 匹配非空白字符 | \S+ | 匹配非空格内容 |
例外用法:
[\d\s]同时匹配数字和空白字符。
三、锚点(定位)
| 符号 | 含义/功能 | 示例 | 说明/结果 |
|---|---|---|---|
^ | 行首 | ^Hello | 匹配以Hello开头的行 |
$ | 行尾 | end$ | 匹配以end结尾的行 |
\b | 单词边界 | \bcat\b | 匹配独立单词cat |
\B | 非单词边界 | \Bcat\B | 匹配如bobcat里的cat |
例外用法:
^\s*$匹配仅含空白的整行。
四、量词(重复控制)
| 符号 | 含义/功能 | 示例 | 说明/结果 |
|---|---|---|---|
* | 0次或多次(贪婪) | a* | 匹配""、a、aa、aaa等 |
*? | 0次或多次(非贪婪) | a*? | 尽可能少匹配a |
+ | 1次或多次(贪婪) | a+ | 匹配a、aa、aaa等 |
+? | 1次或多次(非贪婪) | a+? | 尽可能少匹配a |
? | 0次或1次 | a? | 匹配""或a |
?? | 0次或1次(非贪婪) | a?? | 最少匹配 |
{n} | 恰好n次 | a{3} | 匹配aaa |
{n,} | 至少n次 | a{2,} | 匹配aa、aaa、aaaa... |
{n,m} | n到m次 | a{2,4} | 匹配aa、aaa、aaaa,不匹配a、aaaaa |
五、分组与引用
| 符号 | 含义/功能 | 示例 | 说明/结果 |
|---|---|---|---|
() | 分组 | (abc)+ | 匹配abc、abcabc |
(?: ) | 非捕获分组 | (?:abc)+ | 匹配abc、abcabc,不捕获内容 |
\1, \2… | 引用第1、2...个分组内容(在替换时) | (\w+) \1 | 匹配如abc abc,\1为第1组内容 |
$1, $2… | 替换时引用分组内容(仅替换用) | 查找(cat), 替换为$1s | cat替换成cats |
$0 | 替换时代表整段匹配内容 | 查找.*, 替换->$0<- | 整行加前后缀 |
例外用法:
((a)(b)),$1=ab,$2=a,$3=b
六、字符集合
| 符号 | 含义/功能 | 示例 | 说明/结果 |
|---|---|---|---|
[abc] | 匹配a或b或c中的一个字符 | [abc] | 匹配a、b、c |
[^abc] | 匹配非a、b、c的单字符 | [^abc] | 匹配除a、b、c外的字符 |
[a-z] | 匹配a到z之间任一小写字母 | [a-z] | 匹配a、b...z |
[A-Z] | 匹配A到Z之间任一大写字母 | [A-Z] | 匹配A、B...Z |
[0-9] | 匹配任一数字 | [0-9] | 匹配0-9 |
[a-zA-Z0-9] | 匹配大小写字母和数字 | [a-zA-Z0-9] | 匹配任何字母或数字 |
[] | 空集合,匹配不到任何内容 | [] | 不会有结果 |
例外用法:
[-abc],[-]放最前面表示“-”本身。
七、转义与特殊字符
| 符号 | 含义/功能 | 示例 | 说明/结果 |
|---|---|---|---|
\. | 匹配点号.本身 | a\.b | 匹配a.b |
\\ | 匹配反斜杠\本身 | \\d | 匹配\d文本 |
\* | 匹配星号*本身 | a\*b | 匹配a*b |
\( \) | 匹配小括号 | \([0-9]+\) | 匹配带括号的数字如(123) |
\[ \] | 匹配方括号 | \[[a-z]+\] | 匹配如[abc] |
| | 匹配竖线` | `本身 | a|b |
八、断言与逻辑运算(高级,“与”、“或”)
| 写法/符号 | 逻辑 | 示例表达式 | 说明/结果 |
|---|---|---|---|
| ` | ` | 逻辑或 | `apple |
(?=exp1)(?=exp2) | 逻辑与 | ^(?=.*apple)(?=.*banana).* | 同时包含apple和banana,顺序无关 |
(?=exp) | 正向先行断言 | foo(?=bar) | 匹配foobar中的foo,后跟bar |
(?!exp) | 否定先行断言 | foo(?!bar) | 匹配foo后面不是bar的位置 |
(?<=exp) | 正向后行断言 | (?<=@)\w+ | 匹配邮箱@后面的用户名(Notepad++ 8.3+支持) |
(?<!exp) | 否定后行断言 | (?<!@)\w+ | 匹配不是@后面的单词(Notepad++ 8.3+支持) |
逻辑与例外补充:
多个条件用多个
(?=...)叠加,如^(?=.*cat)(?=.*dog).*表示一行同时有cat和dog。
九、换行与制表符
| 符号 | 含义/功能 | 示例 | 说明/结果 |
|---|---|---|---|
\n | 换行符(LF,Unix) | abc\ndef | 匹配跨行内容 |
\r | 回车符(CR,Win) | \r\n | Windows文本换行 |
\t | 制表符Tab | a\tb | 匹配a后跟Tab再跟b |
十、非贪婪模式
| 符号 | 含义/功能 | 示例 | 说明/结果 |
|---|---|---|---|
*? | 非贪婪0次或多次 | ".*?" | 匹配最短一对引号内的内容 |
+? | 非贪婪1次或多次 | <.+?> | 匹配最短的HTML标签 |
?? | 非贪婪0或1次 | ab?? | 尽量不匹配b |
十一、其它
| 符号 | 含义/功能 | 示例 | 说明/结果 |
|---|---|---|---|
(?i) | 匹配时忽略大小写(置于表达式前) | (?i)abc | 匹配abc、ABC等 |
(?#...) | 注释,不参与匹配 | (?#note) | 正则中的说明 |
实用组合示例
一行同时包含 apple 和 banana(无顺序要求)
查找:^(?=.*apple)(?=.*banana).*行首是数字且有字母
查找:^(?=\d)(?=.*[a-zA-Z]).*替换所有行首数字为
#加数字
查找:^(\d+)替换:#$1提取邮箱用户名
查找:^(\w+)@(\w+\.\w+)$替换:$1最短匹配HTML标签
查找:<[^>]+?>
补充说明
Notepad++ 默认正则“行”模式,点
.不匹配换行,可勾选“点匹配换行”。替换时分组用
$1,查找里引用分组用\1。断言是零宽度判断,不消耗字符。
部分高阶特性(如命名分组等)Notepad++ 暂不支持。
参考官方说明:
Notepad++ 用户手册:正则表达式支持说明