正则表达式不仅可以用来匹配文本,还可以用来提取信息以便进一步处理。这是通过使用特殊的括号元字符 ( 和 ) 来定义分组(groups)实现的。括号中的任何子模式都会被捕获为一个分组。在实际应用中,这种方式可以用于从各种数据中提取信息,比如电话号码或电子邮件地址。
举个例子,假设你有一个命令行工具,可以列出你在云端保存的所有图像文件。你可以使用正则表达式 ^(IMG\d+.png)$ 来捕获并提取完整的文件名;但如果你只想提取不带扩展名的文件名,可以使用模式 ^(IMG\d+).png$,它只会捕获句点之前的部分。
现在请你尝试编写一个正则表达式,只匹配 PDF 文件名(不包含扩展名)。你可以使用上面介绍的分组语法来实现。
| Task | Text | Capture Groups | |
| 捕获 | file_record_transcript.pdf | file_record_transcript | ![]() |
| 捕获 | file_07241999.pdf | file_07241999 | ![]() |
| 跳过 | testfile_fake.pdf.tmp | ![]() |
| 提示 | 我们只想捕获那些以 "file" 开头、并且以文件扩展名 ".pdf" 结尾的行,因此可以编写一个简单的正则表达式,用来捕获从 "file" 开始一直到扩展名之间的所有内容,例如:^(file.+)\.pdf$。 |