查找替换里的正则表达式:七个示例入门指南
正则表达式(regex)是用几个符号写成的匹配模式。在查找替换工具中,打开“正则”开关后,“查找”框会把输入当作模式来读,而不是普通文字,所以句号表示任意一个字符,而不是句号本身。大多数有用的模式只需要几个符号。普通词语查找时请关掉正则,这样每个符号都按字面意思处理。
查找替换一次替换文中所有某个词免费使用需要用到的符号
| 符号 | 匹配内容 |
|---|---|
| . | 除换行符外的任意一个字符 |
| * | 前面的内容,出现零次或多次 |
| + | 前面的内容,出现一次或多次 |
| ? | 前面的内容,出现一次或不出现 |
| [ ] | 方括号中的任意一个字符,例如 [aeiou] 或 [0-9] |
| \d \w \s | 一个数字;一个字母、数字或下划线;一个空格、制表符或换行符 |
| ( ) | 一个分组,替换框可以用 $1、$2 等重复使用它 |
| ^ 和 $ | 整段文本的开头和结尾 |
大写字母表示取反:\D 是任何非数字字符,\S 是任何非空白字符。
本工具有两点需要注意。第一,\w 只匹配英文字母、数字和下划线。要匹配带重音符号的字母,请使用 \p{L},它能匹配任何字母表中的字母。第二,^ 和 $ 匹配的是整段文本的开头和结尾,而不是每一行的开头和结尾。下面的示例改用模式中的换行符来处理逐行的情况。
分组与 $1
把模式的一部分放进圆括号,工具就会记住这部分匹配到的内容。在替换框中,$1 表示第一个分组,$2 表示第二个分组,$& 表示整个匹配结果。工具自带的常见问题解答给出了一个经典例子:查找填写 (\w+)@(\w+),替换填写 $2 at $1,文本 name@site 就会变成 site at name。分组只在打开“正则”时才生效。关闭时,$1 会按原样输入。
分步构建模式
先写出你要找的确切文字,再用符号替换那些会变化的部分。像 2026-11-04 这样的日期,可以写成 \d{4}-\d{2}-\d{2},其中 {4} 表示前面的内容恰好出现四次。先测试简单的版本,只有当高亮结果显示匹配过多时,才收紧模式。
如果想单独看看某个模式的效果、又不想改动任何内容,正则表达式测试工具可以用示例文本运行模式,并列出每一处匹配。
七个示例
每个示例都要先打开“正则”。工具会在复制之前高亮匹配内容并显示数量,所以请先在文本副本上测试每个示例。
- 交换姓和名。 查找
(\w+) (\w+),替换为$2, $1。"Ada Lovelace" 会变成 "Lovelace, Ada"。如果名字带重音符号,请使用(\p{L}+) (\p{L}+)。此写法只适用于两个词的名字。 - 删除行尾空格。 查找
[ \t]+(?=\r?\n|$),替换框留空。它匹配的是紧挨着换行符或文本末尾的空格或制表符。前瞻断言(?=...)用来检查换行符,但不会把它删掉;\r?则负责处理 Windows 的换行符。修复粘贴的文本中有“逐行修剪”选项,作用相同。 - 合并连续空格。 查找
{2,},也就是连续两个或更多的空格,替换为一个空格。两个或更多空格会变成一个。这也会缩小缩进,所以代码请不要使用。 - 为每行添加前缀。 查找
(.+),替换为- $1。换行符之间每段一个或多个字符就是一行,$1 保存的就是这一行的内容。空行会被跳过。请使用一个或多个的写法.+,而不是零个或多个的写法,因为后者也会匹配换行符之间的空位,导致空行前面多出一个多余的短横线。 - 删除空行。 查找
\n\s*(?=\n),替换框留空。匹配的是一个换行符加上它之后的所有空白字符,直到下一个换行符为止,而下一个换行符会被保留。这样就能删除空行,包括只含空格的空行。由于\s也能匹配回车符,Windows 换行符同样适用。文本最顶部的空行会保留。删除重复行工具中有“删除空行”选项,一下就能完成同样的操作。 - 每行一项。 查找
,[ ]*,替换为\n,并勾选替换框中的“替换中读取 \n 和 \t”。"apples, pears, plums" 会变成三行。不勾选的话,\n 会保持为反斜杠加字母 n 两个字符。 - 给每个数字加上方括号。 查找
\d+,替换为[$&]。"Order 42 and 7" 会变成 "Order [42] and [7]"。$& 表示整个匹配,所以不需要分组。
复制前检查
- 匹配数量和高亮内容显示了模式抓到的内容。如果高亮不对,结果也会出错。
- 模式有错误时,输入框下方会显示“不是有效的模式”。修正模式后,结果会自动更新。
- 替换框留空会删除所有匹配内容。输入框里的提示文字会说明这一点。
- “区分大小写”默认关闭,所以示例会同时匹配大写和小写。需要区分时再打开。
- 打开“正则”后,若要查找字面上的句号或方括号,请在前面加反斜杠:\. 或 \[。
边界情况
- 贪婪匹配。
.+会尽可能多地匹配。若想在第一个匹配处停止,就加上问号:.+?。对于像<b>.+</b>这样的文本,这一点很重要,因为它可能跨越多个标签。 - 整词匹配。 对于普通单词,关闭“正则”更安全。如工具的常见问题所说,“只匹配整词”选项可以防止 cat 匹配到 category 中。查找替换指南中有更多整词替换的示例。
- 保留原文。 结果显示在单独的框中,输入内容保持不变。满意后再复制结果。
由 AI 辅助翻译自英文原文。
评论
还没有评论。快来抢沙发。


