柳月微微 發表於 2024-8-12 09:50:27

Notepad+正则表达式使用方法举例详解

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">常用的元字符和语法规则来构建你的表达式:</a></li><li><a href="#_label1">特殊字符</a></li><li><a href="#_label2">开始查找</a></li><li><a href="#_label3">示例代码</a></li><li><a href="#_label4">查找所有的数字:</a></li><li><a href="#_label5">查找以 &quot;apple&quot; 开头的行:</a></li><li><a href="#_label6">查找包含邮箱地址的文本:</a></li><li><a href="#_label7">查找重复的单词:</a></li><li><a href="#_label8">快速查找标记提取字符串</a></li><li><a href="#_label9">特殊字段替换</a></li><li><a href="#_label10">总结&nbsp;</a></li></ul></div><p class="maodian"><a name="_label0"></a></p><h2>常用的元字符和语法规则来构建你的表达式:</h2>
<p>元字符是正则表达式的基本构成单位,它们代表了不同的含义,如下所示:</p>
<table><tbody><tr><th>元字符</th><th>含义</th></tr><tr><td>.</td><td>代表任意字符,换行符除外</td></tr><tr><td>^</td><td>代表一行的开头</td></tr><tr><td>$</td><td>代表一行的结尾</td></tr><tr><td>*</td><td>代表一个字符可以出现 0 次或多次</td></tr><tr><td>+</td><td>代表一个字符可以出现 1 次或多次</td></tr><tr><td>?</td><td>代表一个字符可以出现 0 次或 1 次</td></tr><tr><td>{n}</td><td>代表一个字符可以出现 n 次</td></tr><tr><td>{n,}</td><td>代表一个字符可以出现 n 次或多次</td></tr><tr><td>{n,m}</td><td>代表一个字符可以出现 n~m 次</td></tr><tr><td>[&hellip;]</td><td>代表括号中任意一个字符</td></tr><tr><td>[^&hellip;]</td><td>代表除括号中字符外的任意字符</td></tr><tr><td>\</td><td>转义字符</td></tr></tbody></table>
<p class="maodian"><a name="_label1"></a></p><h2>特殊字符</h2>
<p>在正则表达式中,还有一些特殊字符,它们代表了不同的意思:</p>
<table><tbody><tr><th>特殊字符</th><th>含义</th></tr><tr><td>\d</td><td>代表任意一个数字,等价于 </td></tr><tr><td>\D</td><td>代表任意一个非数字字符,等价于 [^0-9]</td></tr><tr><td>\w</td><td>代表任意一个字母、数字或下划线,等价于 </td></tr><tr><td>\W</td><td>代表任意一个非字母、数字或下划线字符,等价于 [^a-zA-Z0-9_]</td></tr><tr><td>\s</td><td>代表任意一个空白字符,包括空格、制表符、换行符等</td></tr><tr><td>\S</td><td>代表任意一个非空白字符</td></tr></tbody></table>
<p>汇总如下:</p>
<p>\ 转义字符 如:要使用 &ldquo;\&rdquo; 本身, 则应该使用&ldquo;\&rdquo;</p>
<p>\t Tab制表符 注:扩展和正则表达式都支持</p>
<p>\r 回车符CR 注:扩展支持,正则表达式不支持</p>
<p>\n 换行符LF 注:扩展支持,正则表达式不支持</p>
<p>\r\n 正则表达式可表示回车换行</p>
<p>. 匹配任意一个字符</p>
<p>^ 其右边的表达式被匹配在行首。如:^A匹配以&ldquo;A&rdquo;开头的行</p>
<p>$ 其左边的表达式被匹配在行尾。如:e$匹配以&ldquo;e&rdquo;结尾的行</p>
<p>| 或运算符,匹配表达式左边和右边的字符串。如:ab|bc匹配&ldquo;ab&rdquo;或&ldquo;bc&rdquo;</p>
<p>[] 匹配列表中任意单个字符。如:匹配&ldquo;a&rdquo;或&ldquo;b&rdquo;;匹配任意单个数字</p>
<p>[^] 匹配列表之外的任意单个字符。如:匹配&ldquo;a&rdquo;和&ldquo;b&rdquo;以外的单个字符;匹配任意单个非数字字符</p>
<p>*其左边的字符被匹配任意次(0次或多次)。如:be*匹配&ldquo;b&rdquo;,&ldquo;be&rdquo;或&ldquo;bee&rdquo;</p>
<p>+ 其左边的字符被匹配至少一次(1次或多次)。如:be+匹配&ldquo;be&rdquo;或&ldquo;bee&rdquo;,但不匹配&ldquo;b&rdquo;</p>
<p>? 其左边的字符被匹配0次或者1次。如:be?匹配&ldquo;b&rdquo;或&ldquo;be&rdquo;,但不匹配&ldquo;bee&rdquo;;\r?\n匹配行结尾符</p>
<p>() 影响表达式匹配的顺序(类似C++的小括号会影响表达式运算顺序),并且用作表达式的分组标记(标记从1开始)如:(bc)smn\1匹配&ldquo;tbcsmntbc&rdquo;;另见:看下文的示例</p>
<p>{} 指定前面的字符或分组的出现次数 如:abc{3}匹配abccc;a(bc){2}匹配abcbc</p>
<p>\d 匹配一个数字字符。等价于:</p>
<p>\D \d取反,匹配一个非数字字符。等价于:[^0-9]</p>
<p>\s 匹配任意单个空白字符:包括空格、制表符等(注:不包括换车符和换行符)。等价于:[ \t]</p>
<p>\S \s取反的任意单个字符。</p>
<p>\w 匹配包括下划线的任意单个字符。等价于:</p>
<p>\W \w 取反的任意单个字符。等价于:[^A-Za-z0-9_]</p>
<p>\b 匹配单词起始处或结尾处<br />&nbsp;</p>
<p>正则表达式需转义的字符包括:</p>
<p>* . ? + ^ $ | \ / [ ] ( ) { }</p>
<p class="maodian"><a name="_label2"></a></p><h2>开始查找</h2>
<p>在 Notepad 中,我们可以通过&ldquo;查找&rdquo;功能来查找特定的文本。首先,我们需要展开&ldquo;查找&rdquo;对话框,在菜单栏中选择&ldquo;编辑&rdquo;-&gt;&ldquo;查找&rdquo;,或者使用快捷键&ldquo;Ctrl + F&rdquo;。</p>
<p>在查找对话框中,我们可以输入要查找的文本。如果我们要使用正则表达式查找,需要在&ldquo;查找选项&rdquo;中勾选&ldquo;使用正则表达式&rdquo;。此时,我们就可以输入正则表达式了。</p>
<p>例如,我们要查找所有以&ldquo;at&rdquo;结尾的单词,可以使用正则表达式&nbsp;<code>\b\w+at\b</code>,其中&nbsp;<code>\b</code>&nbsp;代表单词的边界,<code>\w</code>&nbsp;代表任意一个字母、数字或下划线字符,<code>+</code>代表匹配前面的字符出现 1 次或多次。输入完正则表达式后,点击&ldquo;查找下一个&rdquo;或使用快捷键&ldquo;F3&rdquo;,Notepad 就会从当前光标位置开始查找符合条件的字符串了。</p>
<p>如果要替换符合条件的字符串,可以在&ldquo;替换&rdquo;栏中输入要替换的文本。同样,如果要使用正则表达式替换,需要勾选&ldquo;使用正则表达式&rdquo;。</p>
<p>例如,我们想将所有以&ldquo;at&rdquo;结尾的单词替换为&ldquo;dog&rdquo;,可以在&ldquo;替换&rdquo;栏中输入&ldquo;dog&rdquo;,然后点击&ldquo;全部替换&rdquo;或使用快捷键&ldquo;Ctrl + H&rdquo;。</p>
<p>比如我们要搜索以https://开头的并且以.com/结尾的字符串</p>
<p>正则表达式为:</p>
<p>开头字符串.+.结尾字符串</p>
<p>或者:</p>
<p>开头字符串.+结尾字符串</p>
<p>或者:</p>
<p>开头字符串.*结尾字符串</p>
<p class="maodian"><a name="_label3"></a></p><h2>示例代码</h2>
<p>以下是一个使用正则表达式在 Notepad 中查找和替换文本的示例代码:</p>
<p>查找:<br />1. 在查找对话框中输入正则表达式:\b\w+at\b<br />2. 勾选&ldquo;使用正则表达式&rdquo;<br />3. 点击&ldquo;查找下一个&rdquo;或使用快捷键&ldquo;F3&rdquo;</p>
<p><code>\b</code>:匹配单词的边界。 例,\b\w+bug\b&nbsp; 查找含有bug的行</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024081209451631.png" /></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024081209451632.png" /></p>
<p class="maodian"><a name="_label4"></a></p><h2>查找所有的数字:</h2>
<ul><li><ul><li>正则表达式:<code>\d+</code></li><li>解释:匹配一个或多个连续的数字。</li></ul></li></ul>
<p>^[*]&nbsp; &nbsp;匹配以*为开头的字符,不加括号*就为全局匹配符号</p>
<p class="maodian"><a name="_label5"></a></p><h2>查找以 &quot;apple&quot; 开头的行:</h2>
<ul><li><ul><li>正则表达式:<code>^apple.*</code></li><li>解释:以 &quot;apple&quot; 开头,后面可以有任意字符的行。</li></ul></li></ul>
<p class="maodian"><a name="_label6"></a></p><h2>查找包含邮箱地址的文本:</h2>
<ul><li><ul><li>正则表达式:<code>\b+@+\.{2,}\b</code></li><li>解释:匹配常见的邮箱地址格式</li></ul></li><li><code>\b</code>: 表示单词的边界,确保匹配的电子邮件地址不包含在其他字符中。</li><li><code>+</code>: 匹配一个或多个大小写字母、数字、点、下划线、百分号、加号和减号的字符,用于匹配电子邮件地址的用户名部分。</li><li><code>@</code>: 匹配电子邮件地址中的&ldquo;at&rdquo;符号。</li><li><code>+</code>: 匹配一个或多个大小写字母、数字、点和破折号的字符,用于匹配电子邮件地址的域名部分(例如:<a href="https://link.zhihu.com/?target=http%3A//example.com/" rel="external nofollow" target="_blank">example.com</a>)。</li><li><code>\.</code>: 匹配一个点字符,用于分隔域名中的主机和顶级域。</li><li><code>{2,}</code>: 匹配两个或更多大小写字母的字符,用于匹配电子邮件地址的顶级域名部分(例如:com、net、org等)。</li><li><code>\b</code>: 再次表示单词的边界,确保匹配的电子邮件地址不包含在其他字符中。</li></ul>
<p class="maodian"><a name="_label7"></a></p><h2>查找重复的单词:</h2>
<ul><li><ul><li>正则表达式:<code>\b(\w+)\b.*\b\1\b</code></li><li>解释:匹配重复的单词(例如 &quot;apple apple&quot;)</li></ul></li></ul>
<p>以某一符号处分行:&nbsp;</p>
<p>比如,;替换为 /n或 /r/n</p>
<p>查找以&ldquo;字符&rdquo;结尾的行:</p>
<p>比如,条。$</p>
<p>替换:</p>
<p>1. 在&ldquo;替换&rdquo;栏中输入要替换的文本,例如&ldquo;dog&rdquo;</p>
<p>2. 勾选&ldquo;使用正则表达式&rdquo;</p>
<p>3. 点击&ldquo;全部替换&rdquo;或使用快捷键&ldquo;Ctrl + H&rdquo;</p>
<p><code>^</code>:匹配行的开头。 例,^&nbsp; 匹配行首含有这个字符; ^11-14&nbsp; 匹配行首含有&ldquo;11-14&rdquo;字符串</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024081209451633.png" /></p>
<p><code>$</code>:匹配行的结尾。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024081209451634.png" /></p>
<p class="maodian"><a name="_label8"></a></p><h2>快速查找标记提取字符串</h2>
<p>在标记窗口填写正则表达式(?&lt;=sharpness:) .*(?=...) 然后勾选标记所在行、正则表达式,点击按钮&ldquo;全部标记&rdquo;,如图红色背景部分即为查找的标记结果。点击按钮&ldquo;复制标记文本&rdquo;然后新建文本进行粘贴,即可将所有标记的内容粘贴到文本中。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024081209451635.png" /></p>
<p class="maodian"><a name="_label9"></a></p><h2>特殊字段替换</h2>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024081209451636.png" /></p>
<p class="maodian"><a name="_label10"></a></p><h2>总结&nbsp;</h2>
頁: [1]
查看完整版本: Notepad+正则表达式使用方法举例详解