什么是命名捕获组?
命名捕获组 是正则表达式中用于将匹配的子表达式存储到一个带名字的组中,而不是仅仅使用数字索引(如 \1
, \2
)来引用。这种方式让匹配结果更具可读性和可维护性。
语法
不同语言的命名捕获组语法稍有差异:
- Python / Golang / 某些其他语言(支持 PCRE 标准):
(?P<name>pattern)
- name 是捕获组的名字。
- pattern 是该捕获组要匹配的正则表达式。
- JavaScript (ECMAScript 2018+):
(?<name>pattern)
- Node.js 和现代浏览器支持这种语法。
- .NET:
(?<name>pattern)
或
(?'name'pattern)
为什么使用命名捕获组?
1. 提高可读性
普通捕获组(用索引访问)可能让代码难以理解:
const regex = /(\S+)\s+(\S+)\s+(\d+)/;
const match = "hello world 42".match(regex);
console.log(match[1]); // hello
console.log(match[2]); // world
console.log(match[3]); // 42
你需要记住数字索引的意义