命名组大多数现代正则表达式引擎支持编号捕获组和编号反向引用。包含许多组和反向引用的长正则表达式可能难以阅读和理解。此外,在正则表达式的中间添加或删除捕获组会扰乱所有在添加或删除的组之后出现的组的编号。Python 的 re 模块是第一个提出解决方案的:命名捕获组和命名反向引用。(?Pgroup) 将 group 的匹配捕获到反向引用“name”中。name 必须是字母数字序列,以字母开头。group 可以是任何正则表达式…… 阅读更多
非捕获组如果我们不希望一个组捕获其匹配项,我们可以将此正则表达式写为 Set(?:Value)。左括号后的问号和冒号是创建非捕获组的语法。正则表达式 Set(Value)? 匹配 Set 或 SetValue。在第一种情况下,第一个(也是唯一一个)捕获组保持为空。在第二种情况下,第一个捕获组匹配 Value。末尾的问号是量词,使前面的标记可选。Set(?:Value) 匹配 Setxxxxx,即所有以 Set 开头但不以 Value 结尾的字符串。例如…… 阅读更多