找回密码
 立即注册
搜索
查看: 156|回复: 0

[软件] notepad++正则表达式

[复制链接]

4135

主题

695

回帖

4万

积分

版主

积分
41951
发表于 2025-2-5 19:17:31 | 显示全部楼层 |阅读模式
本帖最后由 达耳闻 于 2026-5-19 08:18 编辑
% ?6 S( }& t) F2 S$ ]6 {' u& i- Z. m. O
元字符
含义
.
代表任意字符,换行符除外
^
代表一行的开头
$
代表一行的结尾
*
代表一个字符可以出现 0 次或多次
+
代表一个字符可以出现 1 次或多次
代表一个字符可以出现 0 次或 1 次
{n}
代表一个字符可以出现 n 次
{n,}
代表一个字符可以出现 n 次或多次
{n,m}
代表一个字符可以出现 n~m 次
[…]
代表括号中任意一个字符
[^…]
代表除括号中字符外的任意字符
\
转义字符
特殊字符
含义
\d
代表任意一个数字,等价于 [0-9]
\D
代表任意一个非数字字符,等价于 [^0-9]
\w
代表任意一个字母、数字或下划线,等价于 [a-zA-Z0-9_]
\W
代表任意一个非字母、数字或下划线字符,等价于 [^a-zA-Z0-9_]
\s
代表任意一个空白字符,包括空格、制表符、换行符等
\S
代表任意一个非空白字符

汇总如下:

\ 转义字符 如:要使用 “\” 本身, 则应该使用“\”

\t Tab制表符 注:扩展和正则表达式都支持

\r 回车符CR 注:扩展支持,正则表达式不支持

\n 换行符LF 注:扩展支持,正则表达式不支持

\r\n 正则表达式可表示回车换行

. 匹配任意一个字符

^ 其右边的表达式被匹配在行首。如:^A匹配以“A”开头的行

$ 其左边的表达式被匹配在行尾。如:e$匹配以“e”结尾的行

| 或运算符,匹配表达式左边和右边的字符串。如:ab|bc匹配“ab”或“bc”

[] 匹配列表中任意单个字符。如:[ab]匹配“a”或“b”;[0-9]匹配任意单个数字

[^] 匹配列表之外的任意单个字符。如:[ab]匹配“a”和“b”以外的单个字符;[0-9]匹配任意单个非数字字符

*其左边的字符被匹配任意次(0次或多次)。如:be*匹配“b”,“be”或“bee”

+ 其左边的字符被匹配至少一次(1次或多次)。如:be+匹配“be”或“bee”,但不匹配“b”

? 其左边的字符被匹配0次或者1次。如:be?匹配“b”或“be”,但不匹配“bee”;\r?\n匹配行结尾符

() 影响表达式匹配的顺序(类似C++的小括号会影响表达式运算顺序),并且用作表达式的分组标记(标记从1开始)如:([a-z]bc)smn\1匹配“tbcsmntbc”;另见:看下文的示例

{} 指定前面的字符或分组的出现次数 如:abc{3}匹配abccc;a(bc){2}匹配abcbc

\d 匹配一个数字字符。等价于:[0-9]

\D \d取反,匹配一个非数字字符。等价于:[^0-9]

\s 匹配任意单个空白字符:包括空格、制表符等(注:不包括换车符和换行符)。等价于:[ \t]

\S \s取反的任意单个字符。

\w 匹配包括下划线的任意单个字符。等价于:[A-Za-z0-9_]

\W \w 取反的任意单个字符。等价于:[^A-Za-z0-9_]

\b 匹配单词起始处或结尾处
3 n7 \7 B' c5 D$ R+ ^# o

正则表达式需转义的字符包括:

* . ? + ^ $ | \ / [ ] ( ) { }

在 Notepad 中,我们可以通过“查找”功能来查找特定的文本。首先,我们需要展开“查找”对话框,在菜单栏中选择“编辑”->“查找”,或者使用快捷键“Ctrl + F”。

在查找对话框中,我们可以输入要查找的文本。如果我们要使用正则表达式查找,需要在“查找选项”中勾选“使用正则表达式”。此时,我们就可以输入正则表达式了。

例如,我们要查找所有以“at”结尾的单词,可以使用正则表达式 \b\w+at\b,其中 \b 代表单词的边界,\w 代表任意一个字母、数字或下划线字符,+代表匹配前面的字符出现 1 次或多次。输入完正则表达式后,点击“查找下一个”或使用快捷键“F3”,Notepad 就会从当前光标位置开始查找符合条件的字符串了。

如果要替换符合条件的字符串,可以在“替换”栏中输入要替换的文本。同样,如果要使用正则表达式替换,需要勾选“使用正则表达式”。

例如,我们想将所有以“at”结尾的单词替换为“dog”,可以在“替换”栏中输入“dog”,然后点击“全部替换”或使用快捷键“Ctrl + H”。

比如我们要搜索以https://开头的并且以.com/结尾的字符串

正则表达式为:

开头字符串.+.结尾字符串

或者:

开头字符串.+结尾字符串

或者:

开头字符串.*结尾字符串

以下是一个使用正则表达式在 Notepad 中查找和替换文本的示例代码:

查找:
) i9 B+ B1 y: {# N8 V' H1. 在查找对话框中输入正则表达式:\b\w+at\b
4 ?% h4 n& d, F( R. B/ O! t" c2. 勾选“使用正则表达式”; M0 I+ s7 o7 M) m& @! W
3. 点击“查找下一个”或使用快捷键“F3”

\b:匹配单词的边界。 例,\b\w+bug\b  查找含有bug的行

查找所有的数字:

  • 4 H9 B7 s$ L* G% p% u  J
    • 正则表达式:\d+
    • 解释:匹配一个或多个连续的数字。
      % v  j8 r7 R) I( i) m. B
    7 u$ J5 k: N' W

^

   匹配以*为开头的字符,不加括号*就为全局匹配符号
0 F! `5 m7 o' u! S+ d3 x  }( H$ |- L1 v2 q) d# G6 {) ?' j
查找以 "apple" 开头的行:
  • ) T9 g2 p: ^1 N
    • 正则表达式:^apple.*
    • 解释:以 "apple" 开头,后面可以有任意字符的行。
      ) a9 K4 t1 I2 m8 ]9 H

    " G: I. [5 k  H" q5 L" a& R; O

. ?& s9 @& d; j( ^/ j/ F' I9 t4 m: l查找包含邮箱地址的文本:

  • $ Q# \: a; G$ Q* s! c8 f# q
    • 正则表达式:\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b
    • 解释:匹配常见的邮箱地址格式
      / W7 N+ g( ], w% _2 H5 X; S4 Y
  • \b: 表示单词的边界,确保匹配的电子邮件地址不包含在其他字符中。
  • [A-Za-z0-9._%+-]+: 匹配一个或多个大小写字母、数字、点、下划线、百分号、加号和减号的字符,用于匹配电子邮件地址的用户名部分。
  • @: 匹配电子邮件地址中的“at”符号。
  • [A-Za-z0-9.-]+: 匹配一个或多个大小写字母、数字、点和破折号的字符,用于匹配电子邮件地址的域名部分(例如:example.com)。
  • \.: 匹配一个点字符,用于分隔域名中的主机和顶级域。
  • [A-Za-z]{2,}: 匹配两个或更多大小写字母的字符,用于匹配电子邮件地址的顶级域名部分(例如:com、net、org等)。
  • \b: 再次表示单词的边界,确保匹配的电子邮件地址不包含在其他字符中。# I/ @3 ?( z( Q9 b$ I
: V  I6 b% Y4 u
查找重复的单词:

  • + w( A: N8 o6 O* [- G
    • 正则表达式:\b(\w+)\b.*\b\1\b
    • 解释:匹配重复的单词(例如 "apple apple"): r0 O0 Y9 F! ?4 R1 J( E1 c

    & J! V8 Y7 c9 \6 O/ `) w

以某一符号处分行:

比如,;替换为 /n或 /r/n

查找以“字符”结尾的行:

比如,条。$

替换:

1. 在“替换”栏中输入要替换的文本,例如“dog”

2. 勾选“使用正则表达式”

3. 点击“全部替换”或使用快捷键“Ctrl + H”

^:匹配行的开头。 例,^[1]  匹配行首含有这个字符; ^11-14  匹配行首含有“11-14”字符串

% M& J% v& a- Z6 Q" G. E0 p2 N6 S

- n, z8 i" C* k% V' x# M在Notepad++中去除空行的实用技巧
2 I: M% l2 H0 _& X9 U9 k4 `" y- D2 |/ c
1. 使用内置功能直接去除空行
Notepad++内置了直接去除空行的功能,操作简单快捷。具体步骤如下:
  • 打开Notepad++并加载需要处理的文件。
  • 点击菜单栏中的“编辑”(Edit)选项。
  • 在下拉菜单中选择“行操作”(Line Operations)-> “移除空行”(Remove Empty Lines)。
    " i" t3 {6 [/ q
这一步骤将自动检测并删除文件中的所有空白行,包括那些仅包含空格或制表符的“伪空行”。
2. 利用正则表达式去除空行
对于需要更精细控制空行删除的场景,可以使用正则表达式进行替换。Notepad++支持正则表达式的搜索和替换功能,可以灵活处理各种复杂的文本模式。
  • 按下Ctrl + H快捷键打开“替换”对话框。
  • 在“查找目标”(Find what)框中输入正则表达式^\s*$\r?\n。这个表达式匹配任何仅包含空白字符(包括空格、制表符等)或完全没有内容的行,以及可能的行尾换行符。
  • “替换为”(Replace with)框保持为空。
  • 勾选“正则表达式”(Regular expression)搜索模式。
  • 点击“全部替换”(Replace All)按钮。: @: ]6 y' a0 t1 D6 ?0 b* B5 H
请注意,正则表达式中的\s*匹配任意数量的空白字符,^和$分别表示行的开始和结束,\r?\n则匹配Windows系统中的换行符(\r\n),同时也兼容只包含\n的Unix/Linux系统换行符。
3. 借助TextFX插件去除空行
TextFX是Notepad++的一个强大插件,提供了许多实用的文本处理功能,包括去除空行。如果尚未安装TextFX插件,可以通过Notepad++的插件管理器轻松安装。
  • 打开Notepad++,点击菜单栏中的“插件”(Plugins)-> “插件管理”(Plugin Admin)-> “显示插件管理器”(Show Plugin Admin)。
  • 在插件列表中找到TextFX并勾选,然后点击“安装”(Install)。
  • 安装完成后,重启Notepad++。
  • 现在,可以在菜单栏中找到TextFX插件的选项,依次点击“TextFX”-> “TextFX Tools”-> “Delete Blank Lines”即可去除空行。0 U* O6 d' i& g: X, C
" w6 A/ G" t2 K* g  K3 D0 `

: z6 L! G& @; I  K" O" P: x
" ^# X* M& N8 B
3 {" u, i! U2 \4 U# F8 b( [" J替换:[来源请求]为空格
% H9 K% b2 J8 E" g\[来源请求\]0 Y" f, R$ k- ?

% m) t1 U  j- L# @; c( G替换:[编辑]为空格2 u  y( i) D/ ?0 _0 I- T# P
\[编辑\]
2 M  h& T9 X- ?8 a+ m2 [
& t, z5 H; K+ ~5 K: q  O3 w替换:[一位数]为空格' \! I5 F3 C3 j( z- p5 z! N, _
\[[0-9]\]! x3 g) J( r, k2 H6 a
- F, r5 J1 K( R" ^* t5 K: m
替换:[两位数]为空格
* ]3 h( e8 ^5 W/ H# U6 f1 ~& D\[[0-9][0-9]\]
6 N* H0 x  ?) V" d' J. g1 R& h9 l9 g
替换:[三位数]为空格
* p! Q+ F; l6 q3 E: r1 P# Y5 `6 ?\[[0-9][0-9][0-9]\]
5 j& _4 b" j* ?3 z1 i/ d
4 V  u% u+ P' X替换:[注 3]为空格
. ^6 X/ w* h; }) s; w\[注 [0-9]\]
7 f$ C! q$ Q2 n& Y" i* h2 b# b  h  F% Y+ I, k: k. `2 q1 [- S
替换:[字母]为空格
6 a6 ]: N5 C0 r+ J\[[a-z]\]1 e3 E7 M. [. F# u
; I% N' k# N6 n3 o
\d
0 M, G+ ~# _' G9 c0 e0 K代表任意一个数字,等价于 [0-9]
. }0 c; M& x6 [1 g. i  Q6 D\D% T. J; t  q3 _- R
代表任意一个非数字字符,等价于 [^0-9], y& t# n8 Y2 G
\w
+ z# u! g% p( z9 }代表任意一个字母、数字或下划线,等价于 [a-zA-Z0-9_]3 J1 O2 j  r3 }' ]# }6 }
\W6 u# \# B  e( G% o
代表任意一个非字母、数字或下划线字符,等价于 [^a-zA-Z0-9_]$ A3 Y5 N8 ?* _" q2 ^
\s
8 m4 C1 R* z# [- J3 W代表任意一个空白字符,包括空格、制表符、换行符等) P7 d7 n- V- i$ c2 r3 ^: z
\S* a; a7 u. j9 O) u. l
代表任意一个非空白字符
% [  I! n5 X( ^2 O" y7 g0 q
! M7 y; ~) p. L; l& q5 @* F/ ?8 a1 D8 I, k6 T) j
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

无图|手机版|日常生活

© 2021-2026 THEDAILYLIVES.COM

快速回复 返回顶部 返回列表