Notepad++中如何有效利用正则表达式来高效处理手上工作?
在 Notepad++ 中,正则表达式(Regular Expressions) 是更强大的文本匹配工具,支持复杂模式匹配(如数字、字母、特殊符号的组合),适合处理格式不统一或需要精准操作的场景(如数据清洗、日志分析、代码重构等)。
熟练掌握正则表达式得常用语法后,可大幅提升文本编辑效率。
下为常用正则语法及简单示例,附步骤及说明。
一、前置准备
- 打开 Notepad++,按
Ctrl + H
打开“查找和替换”对话框。 - 在“查找模式”中选择 “正则表达式”(关键!否则正则不生效)。
- 勾选“匹配换行符”(仅在需要跨多行匹配时使用,默认不勾选)。
二、核心正则语法速查
符号/语法 | 说明 |
---|---|
. |
匹配任意单个字符(除换行符 ` |
`,除非勾选“匹配换行符”)。 | |
* |
匹配前一个字符0次或多次(贪婪匹配)。 |
+ |
匹配前一个字符1次或多次(贪婪匹配)。 |
? |
匹配前一个字符0次或1次(非贪婪时需配合 *? 或 +? )。 |
\d |
匹配数字(等价于 [0-9] )。 |
\D |
匹配非数字(等价于 [^0-9] )。 |
\w |
匹配字母、数字、下划线(等价于 [a-zA-Z0-9_] )。 |
\W |
匹配非字母、数字、下划线(等价于 [^a-zA-Z0-9_] )。 |
\s |
匹配空白字符(空格、制表符 \t 、换行符 ` |
、回车符 \r`)。 |
|
\S |
匹配非空白字符。 |
^ |
匹配行首(如 ^hello 匹配行首的 "hello")。 |
$ |
匹配行尾(如 world$ 匹配行尾的 "world")。 |
[abc] |
匹配方括号内任意一个字符(如 [aeiou] 匹配元音字母)。 |
[^abc] |
匹配不在方括号内的任意一个字符(如 [^0-9] 匹配非数字)。 |
( ) |
分组捕获(如 (ab)+ 匹配 "ababab",\1 引用第一个分组内容)。 |
| |
逻辑“或”(如 cat|dog 匹配 "cat" 或 "dog")。 |
\ |
转义特殊字符(如 \. 匹配实际的句点 . ,\* 匹配实际的星号 * )。 |
三、简单使用示例
以下示例覆盖常见需求,直接复制查找内容和替换内容到 Notepad++ 即可使用。
示例1:删除行首/行尾的所有空格
需求:清理文本中每行开头或结尾的多余空格(如 你好世界
→ 你好世界
)。
- 查找内容:
^\s+|\s+$
^\s+
:匹配行首(^
)的1个或多个(+
)空白字符(\s
)。|
:逻辑“或”,匹配行尾(\s+$
)的1个或多个空白字符。
- 替换为:空(直接留空)。
- 效果:所有行首/行尾的空格被删除,保留行中间的空格。
示例2:提取邮箱中的用户名
需求:从文本中提取所有邮箱地址的用户名部分(如 user123@example.com
→ 提取 user123
)。
- 查找内容:
([a-zA-Z0-9._%+-]+)@.*
()
:分组捕获,[a-zA-Z0-9._%+-]+
匹配邮箱用户名(允许字母、数字、点、下划线等)。@.*
:匹配@
及之后的所有字符(邮箱域名部分)。
- 替换为:
\1
(\1
表示引用第一个分组的内容,即用户名)。 - 效果:所有邮箱地址会被替换为对应的用户名(如
user123@example.com
→user123
)。
示例3:统一日期格式(YYYY-MM-DD → DD/MM/YYYY)
需求:将文本中的日期格式从 2015-06-21
改为 21/06/2015
。
- 查找内容:
(\d{4})-(\d{2})-(\d{2})
\d{4}
:匹配4位数字(年份)。(\d{2})
:匹配2位数字(月份和日期),用()
分组捕获。
- 替换为:
\3/\2/\1
\3
:引用第三个分组(日期),\2
引用第二个分组(月份),\1
引用第一个分组(年份)。
- 效果:
2015-06-21
→21/06/2015
;1999-12-31
→31/12/1999
。
示例4:批量添加前缀/后缀
需求:给所有以 error:
开头的日志行添加前缀 [WARNING]
(如 error: 文件未找到
→ [WARNING] error: 文件未找到
)。
- 查找内容:
^(error:.*)
^
:匹配行首,(error:.*)
捕获整行内容(从error:
开始到行尾)。
- 替换为:
[WARNING] \1
\1
引用捕获的整行内容,前面添加前缀。
- 效果:所有以
error:
开头的行都会被添加前缀。
示例5:删除重复的空行
需求:清理文本中连续的多个空行,只保留一个空行(如 `
→
`)。
- 查找内容:
\r? (\s*\r? )+
\r?
:匹配 Windows 换行符(\r
)或 Unix 换行符((\s*\r? )+
:匹配1次或多次(+
)空白字符(\s*
)加换行符的组合(即连续空行)。
- 替换为:
\r?
(保留一个换行符)。 - 效果:连续多个空行被合并为一个空行。
示例6:替换全角符号为半角符号
需求:将文本中的全角逗号 ,
、全角句号 。
替换为半角 ,
、.
。
- 查找内容:
[,。]
(注意:全角符号需直接输入,或用 Unicode 编码,如\uFF0C
匹配全角逗号)。 - 替换为:
,
(或根据需求替换为其他半角符号)。 - 效果:所有全角逗号/句号被替换为半角。
示例7:提取括号内的内容
需求:从文本中提取所有圆括号内的内容(如 产品编号:ABC(20150621)
→ 提取 20150621
)。
- 查找内容:
\((.*?)\)
\(
:转义后的左括号(匹配实际的(
)。(.*?)
:非贪婪匹配任意字符(.*?
),并分组捕获(括号内的内容)。\)
:转义后的右括号(匹配实际的)
)。
- 替换为:
\1
(引用捕获的括号内内容)。 - 效果:
(20150621)
→20150621
;(版本1.0)
→版本1.0
。
四、注意事项
- 区分“通配符”和“正则表达式”:必须在“查找模式”中勾选“正则表达式”,否则正则语法无效。
- 转义特殊字符:若需匹配实际的
.
、*
、(
等符号,需用\
转义(如\.
匹配句点)。 - 贪婪 vs 非贪婪:默认
*
和+
是贪婪匹配(尽可能多匹配),若需非贪婪(尽可能少匹配),用*?
或+?
(如.*?
匹配到第一个符合条件的位置)。 - 换行符处理:跨多行匹配时勾选“匹配换行符”(
\r?
匹配 Windows 换行,
通过灵活组合正则表达式,可以高效完成复杂文本操作,适合处理日志、配置文件、代码注释等格式多样的场景。
------------------------------------------------------------
版权所有:中维网
文章链接:https://www.chinafix.net/?post=430
本站文章均为原创,未经授权请勿用于任何商业用途。
版权所有:中维网
文章链接:https://www.chinafix.net/?post=430
本站文章均为原创,未经授权请勿用于任何商业用途。
发表评论