开始之前

正则在一条样例上匹配成功,并不代表它能处理空值、中文、重复字段或不同引擎。更可靠的方法是准备一组小而完整的测试文本。

边看边操作在 正则测试 中打开实际工作区
01

准备有代表性的文本

同时包含应该匹配、不应该匹配、空值和 Unicode 内容。

示例
PN-1042 completed
PN-1043 failed
not-an-order
02

逐步增加边界和分组

一次只增加一个约束,命名分组比纯编号更容易维护。

示例
(?<id>PN-\d+)\s+(?<status>completed|failed)
03

检查每一处匹配

查看完整匹配、捕获组与位置,并确认 g、m、i 等 Flags 是否符合实际环境。

示例
flags: gmi
04

预览替换

在修改文件或数据库内容之前,先对测试集运行替换预览。

示例
$<id> => $<status>
要点总结
  • 失败样例和成功样例同样重要。
  • 正则引擎与 Flags 都是表达式的一部分。
  • 破坏性替换必须先预览。