正则表达式
系列【正则表达式】──AI 时代依然实用的知识
现在,只要把需求告诉 AI,简单的宏或小型程序往往很快就能生成。我自己也已经很少再从头编写代码了。
不过,有一样工具直到今天,我仍然会经常亲自使用。
那就是正则表达式。
过去为了提高翻译和 QA 工作的效率,我曾自学 Word VBA、秀丸(Hidemaru)宏以及一些编程语言,也写过不少用于简化日常工作的宏和小工具。
开始使用 memoQ 之后,需要自己编写宏的机会少了很多。不过,在 memoQ 之外处理一些工作时,以前积累下来的一些宏现在仍然会用到。
近几年,随着 AI 智能体以及 vibe coding(通过自然语言让 AI 编写代码的开发方式)逐渐普及,需要自己动手写代码的情况就更少了。
即便如此,正则表达式仍然没有过时。
网上介绍正则表达式的文章已经非常多。本系列并不打算再写一份完整的语法手册,而是希望从最基础的概念讲起,逐步介绍正则表达式在翻译和 QA 实际工作中可以怎样派上用场。
什么是正则表达式?
简单来说,正则表达式就是“按照文字的规律或模式来搜索内容的一种方法”。
普通搜索寻找的是与输入内容相同的文字。
例如,搜索“2026年”,就会找到“2026年”。
而使用正则表达式时,不一定要指定某一组固定文字,也可以指定类似“4 个数字+年”这样的模式。
这样一来,不仅是“2026年”,“2027年”“1900年”等符合相同模式的文字也可以一次全部找到。
这就是正则表达式最基本的思路。
图 1 普通搜索与正则表达式搜索的区别,以及 \d{4}年 与字符串之间的对应关系。
从最基础开始──先掌握这 4 个表达式
正则表达式里有很多特殊符号。
第一次看到时,可能会觉得有点像密码。不过,并不需要一开始就把所有写法全部记住。实际使用时,真正经常出现的表达式并没有想象中那么多。
先从下面 4 个开始就可以。
| 表达式 | 含义 |
|---|---|
| \d | 1 个数字 |
| + | 前一个字符或表达式重复 1 次以上 |
| {4} | 前一个字符或表达式恰好重复 4 次 |
| . | 除换行符以外的任意 1 个字符 |
\d──1 个数字
首先,
\d
表示 1 个数字。
例如,“1”“5”“9”这样的数字都可以被搜索到。
+──重复 1 次以上
接下来,在 \d 后面加上 +:
\d+
它表示“连续出现 1 个以上的数字”。
因此,下面这些内容都可以匹配:
3202610000
这里真正重要的,并不是把 \d+ 当成一个完整公式死记下来。
\d 表示“1 个数字”,+ 表示“前面的表达式重复 1 次以上”。把两者组合起来,就变成了“连续出现 1 个以上的数字”。
正则表达式其实就是这样,把一个个小部件组合起来使用。
{4}──恰好重复 4 次
这次在 \d 后面加上 {4}:
\d{4}
它表示“恰好有 4 个连续的数字”。
例如:
2026
或者:
1900
都符合这个模式。
在正则表达式后面,还可以直接接普通文字。
例如:
\d{4}年
就可以找到:
1900年2026年2027年
这时,我们搜索的已经不是“2026年”这一组固定文字,而是“4 个数字后面跟着‘年’的字符串”。
.──任意 1 个字符
. 表示除换行符以外的任意 1 个字符。
例如:
第.章
可以找到:
第1章第2章第一章
因为“第”和“章”之间都正好有 1 个字符。
这个表达式非常方便,但由于匹配范围很广,也比较容易搜索到原本没有预期的内容。实际使用时,最好一边确认搜索结果一边使用。
正则表达式不是用来“死记”的
看到这里,正则表达式可能仍然像是一堆特殊符号。
但实际上,并不需要从一开始就把复杂的表达式整串背下来。
例如:
\d{4}年
其实只是由 3 个部分组成:
- \d = 1 个数字
- {4} = 恰好重复 4 次
- 年 = 文字“年”
组合起来就是:
4 个数字+年
先想清楚自己究竟要找什么,再把这个模式拆成几个小部分,最后把对应的表达式组合起来。
掌握这种思路之后,正则表达式其实并没有看上去那么难。
尤其是在翻译和 QA 这类每天需要处理大量文字的工作中,只要掌握一些基本写法,就能在很多地方节省时间。
下一篇预告
这一篇先从最基础的地方开始,介绍了正则表达式的基本概念和几个简单的表达式。
下一篇,我们来看一个更接近实际工作的例子。
例如:
2026年9月1日2025年12月31日1999年1月10日
这些日期的年、月、日都不一样。
如果不想一个日期一个日期分别搜索,要怎样用一个正则表达式一次把它们全部找出来呢?
下一篇会在这次介绍的内容上,再增加少量新的写法,一步一步组合出可以搜索日期的正则表达式。
再下一篇,我们还会进一步把找到的日期转换成其他格式,例如:
2026年9月1日 → 9/1/2026
这种美国常见的“月/日/年”格式,或者:
2026年9月1日 → 1/9/2026
这种欧洲常见的“日/月/年”格式。
先学“搜索”,再进一步学习“替换”。
我们会一次增加一点内容,逐步扩展正则表达式能够做到的事情。