前言基础正则表达式可完成简单字符、连续片段、固定字段的提取工作但在实际爬虫场景中网页源码、接口返回文本往往存在多层嵌套、多字段混杂、格式交错等复杂情况。单一匹配规则仅能获取整段文本无法实现局部字段拆分、多目标同步提取、层级内容筛选正则分组技术便成为解决这类复杂需求的核心手段。正则分组通过括号划分匹配单元可在一次匹配动作中分离多个目标数据同时结合反向引用、分组命名、非捕获分组、嵌套分组等进阶语法能够应对标签嵌套、重复文本、混合字段、不规则段落等各类爬虫复杂解析场景。相较于基础正则分组语法进一步拓展了字符串处理能力也是从入门正则走向高阶正则爬虫的关键节点。本文所使用的核心工具与第三方库官方链接如下Python 官方下载地址https://www.python.org/downloads/re 模块官方文档Python 内置正则库https://docs.python.org/3/library/re.htmlrequests 网络请求库爬虫核心请求工具https://pypi.org/project/requests/正则表达式在线测试工具语法校验https://regex101.com/全文从基础分组原理切入依次讲解普通捕获分组、命名分组、非捕获分组、嵌套分组、反向引用等核心语法搭配大量爬虫真实场景代码案例拆解每一段语法的运行逻辑、适用场景与优劣同时结合多字段提取、嵌套标签解析、重复内容清理、混合文本拆分等综合实战帮助开发者熟练运用分组语法处理高复杂度的网页文本数据。一、正则分组核心概念与分类1.1 分组的定义与爬虫价值正则分组依托英文圆括号()实现它并非单纯的字符包裹符号而是对正则匹配规则进行逻辑划分。括号内的内容会被正则引擎单独捕获、存储在单次匹配中区分出不同的数据片段。在爬虫数据解析中分组的核心价值体现在三个维度其一实现一规则多提取单次匹配同时截取多个不同字段减少正则规则编写数量简化代码结构其二划分匹配层级针对 HTML 嵌套标签、分段文本等层级化内容做定向提取其三依托反向引用复用已匹配内容快速清理重复标签、重复字符、冗余文本提升数据清洗效率。结合爬虫业务场景正则分组可划分为四大主流类型也是本章核心讲解内容分类及基础说明如下表所示表格分组类型语法格式核心作用爬虫典型使用场景普通捕获分组(表达式)捕获括号内匹配内容按序号存储多字段同步提取、标签内多内容截取命名分组(?P名称表达式)自定义分组名称通过名称取值可读性更强字段较多的结构化数据、长规则正则取值非捕获分组(?:表达式)仅参与匹配不单独捕获存储内容辅助匹配、限定匹配范围无需单独提取的片段嵌套分组(外层(内层表达式))分组内部再次嵌套分组划分多层级数据多层嵌套 HTML 标签、层级化文本提取1.2 分组基础匹配规则补充分组语法需要结合前文所学的元字符、数量限定符、贪婪 / 非贪婪匹配共同使用分组本身同样遵循正则全局匹配逻辑。需要明确两个基础规则第一分组不改变原有匹配范围仅对匹配结果做拆分第二默认情况下分组会按照左括号出现顺序依次编号编号从 1 开始整个完整匹配结果默认编号为 0。在爬虫开发中编写分组规则时仍需坚持原始字符串r写法、非贪婪匹配优先、复杂规则搭配匹配模式常量等基础规范保证规则稳定性。二、普通捕获分组详解与实战应用普通捕获分组是使用频率最高的分组形式语法为(匹配规则)每一组括号对应一个独立捕获项引擎会按照括号顺序为分组分配数字编号后续可通过编号单独调取对应数据。re模块中findall、search、match等核心函数对分组的返回结果存在差异化表现这也是初学者极易混淆的知识点。2.1 分组在 re.findall () 中的表现findall作为爬虫批量提取数据的核心函数其返回规则为当正则表达式包含分组时函数不再返回完整匹配字符串而是以元组形式返回每一组分组捕获的内容若存在多个分组元组内元素顺序与分组编号顺序保持一致。2.1.1 单分组提取案例该场景适用于从完整文本中截取单一核心字段也是基础分组最常用的场景模拟从商品行文本中单独提取商品名称。python运行import re # 模拟爬虫获取的商品行文本 goods_text 编号:SP001 商品:Python正则实战 价格:109元 # 正则规则括号划分分组单独捕获商品名称 pattern r商品:(.?) # 全局匹配 result re.findall(pattern, goods_text) print(单分组提取结果, result)代码原理解析规则r商品:(.?) 中(.?)为普通捕获分组采用非贪婪匹配精准截取 “商品:” 之后、空格之前的文本内容。由于表达式内仅有一个分组findall最终返回一维列表列表内元素即为分组捕获到的内容。该写法区别于无分组正则直接过滤掉前缀标识字符仅保留目标数据省去后续字符串切片处理步骤。2.1.2 多分组同步提取案例多分组是普通捕获分组的核心应用场景可在一条规则内定义多个括号单次匹配同时提取多个不同字段广泛用于提取网页中编号、名称、价格、时间、链接等混合数据。python运行import re # 模拟多条商品数据 goods_list 编号:SP001 商品:Python正则实战 价格:109元 编号:SP002 商品:爬虫框架精讲 价格:129元 编号:SP003 商品:数据清洗技巧 价格:79元 # 三个分组分别捕获编号、商品名称、价格 pattern r编号:(.?) 商品:(.?) 价格:(\d)元 result re.findall(pattern, goods_list) # 遍历输出多字段数据 print(多分组批量提取结果) for item in result: goods_id, goods_name, price item print(f商品编号{goods_id}商品名称{goods_name}售价{price}元)代码原理解析正则表达式中依次设置三组(?)、(?)、(\d)三个捕获分组分别对应编号、名称、价格三个字段分组顺序决定元组内数据顺序。findall匹配到每一行符合规则的内容后将三个分组的结果封装为元组所有元组统一存入列表返回。代码中通过序列解包将元组元素赋值给对应变量实现字段拆分展示该写法是爬虫多字段采集的标准范式。价格字段使用\d匹配纯数字过滤文字单位进一步精简数据减少后续数据处理工作量。2.2 分组在 re.search () 中的表现search函数用于查找首个匹配结果返回 Match 匹配对象。分组内容需要通过group(编号)进行调取group(0)代表完整匹配的整段字符串group(1)、group(2)依次调取对应编号分组的内容同时支持groups()方法一次性获取所有分组返回元组数据。2.2.1 基础取值用法python运行import re text 订单号:DD20260611 收件人:张三 联系电话:13800138000 # 定义三个捕获分组 pattern r订单号:(.?) 收件人:(.?) 联系电话:(\d{11}) match_obj re.search(pattern, text) if match_obj: # group(0) 获取完整匹配内容 print(完整匹配内容, match_obj.group(0)) # 按编号获取单个分组 print(订单号, match_obj.group(1)) print(收件人, match_obj.group(2)) print(手机号, match_obj.group(3)) # groups() 获取所有分组返回元组 all_group match_obj.groups() print(所有分组集合, all_group)代码原理解析search匹配成功后生成 Match 对象该对象存储了完整匹配结果与所有分组捕获内容。编号规则固定group(0)为全局匹配文本分组从左至右依次编号为 1、2、3编号与括号顺序严格对应。groups()方法会忽略group(0)仅返回所有自定义捕获分组的内容适用于一次性读取全部字段。代码增加if判断规避无匹配结果时调用分组方法引发的程序异常符合工程开发规范。2.3 普通分组的局限性总结普通捕获分组依靠数字编号取值语法简洁、执行效率高适合分组数量较少3 组以内的场景。但存在明显短板当正则规则较长、分组数量达到 5 组及以上时纯数字编号难以区分每个分组对应的业务字段代码可读性大幅下降后期规则修改、字段调整时极易出现取值错位问题。针对该问题正则提供命名分组语法进行优化。三、命名分组详解与实战应用命名分组在普通分组的基础上为每一个分组自定义专属名称取值时不再依赖数字编号而是通过预设名称调取数据从根源解决多分组场景下可读性差、取值易错位的问题。命名分组是复杂正则、长规则正则的首选方案在爬虫结构化数据提取中应用广泛。3.1 命名分组标准语法Pythonre模块专属命名分组语法(?P分组名称匹配规则)?P命名分组标识为 Python 正则固定格式不可省略或修改分组名称自定义字符串由字母、数字、下划线组成不能以数字开头建议结合业务语义命名匹配规则与普通分组一致填写对应元字符、限定符组合。3.2 命名分组取值方式命名分组同时支持名称取值与数字编号取值两种模式兼容原有语法逻辑名称取值match_obj.group(分组名称)语义清晰推荐使用编号取值仍可使用group(1)、group(2)等数字编号兼容旧代码。3.3 命名分组实战案例3.3.1 单条数据命名分组提取模拟提取用户个人信息使用语义化名称定义分组直观区分每一个字段。python运行import re user_text 用户名:crawler01 性别:男 注册时间:2026-06-11 积分:2680 # 定义命名分组username、gender、reg_time、score pattern r用户名:(?Pusername.?) 性别:(?Pgender.?) 注册时间:(?Preg_time.?) 积分:(?Pscore\d) match_obj re.search(pattern, user_text) if match_obj: # 通过分组名称取值 print(用户名, match_obj.group(username)) print(性别, match_obj.group(gender)) print(注册时间, match_obj.group(reg_time)) print(积分, match_obj.group(score))代码原理解析每一个字段都使用(?P字段名规则)格式定义命名分组分组名称直接对应业务含义阅读代码即可知晓分组用途。取值时直接传入分组名称无需记忆分组顺序即使后期调整正则规则顺序只要分组名称不变取值代码无需修改。该写法大幅降低长正则、多分组代码的维护成本适合字段数量多、规则频繁迭代的爬虫项目。3.3.2 批量数据命名分组结合 findall 使用findall函数搭配命名分组时返回结果仍为元组列表元组内元素顺序与分组定义顺序一致。若需要批量取值并区分字段可结合序列解包或字典转换实现数据结构化。python运行import re # 多条用户数据 user_data 账号:user001 昵称:爬虫新手 等级:Lv3 账号:user002 昵称:数据采集师 等级:Lv6 账号:user003 昵称:正则达人 等级:Lv9 # 命名分组定义 pattern r账号:(?Paccount.?) 昵称:(?Pnickname.?) 等级:(?Plevel.) result re.findall(pattern, user_data) # 遍历并结构化输出 for account, nickname, level in result: print(f账号{account}昵称{nickname}等级{level})代码原理解析findall对命名分组的底层存储逻辑与普通分组一致依旧按照分组先后顺序封装为元组。批量数据场景下命名分组主要作用是优化正则规则的可读性让开发者编写规则时清晰区分各个捕获单元。若需要将批量数据转为字典格式可结合循环手动构建字典实现字段名与数据一一映射适配后续数据入库需求。3.4 命名分组适用场景与选型建议命名分组执行效率与普通分组基本一致无性能损耗。在实际爬虫开发中可遵循以下选型原则分组数量≤3 组优先使用普通捕获分组语法简洁代码简短分组数量≥4 组、正则规则较长、项目需要长期维护强制使用命名分组提升可读性与可维护性对外提供接口、团队协作开发的爬虫项目统一使用命名分组降低团队沟通与理解成本。四、非捕获分组详解与实战应用在部分匹配场景中部分括号仅用于限定匹配范围、组合元字符、辅助整体匹配并不需要单独提取内部内容若使用普通捕获分组会造成多余数据被存储、返回浪费内存且干扰字段取值。正则提供非捕获分组专门解决该问题只参与匹配逻辑不执行捕获存储动作。4.1 非捕获分组语法语法格式(?:匹配规则)核心特征括号内增加?:标识引擎识别后仅将该括号作为逻辑分组不生成独立分组编号、不单独存储内容。4.2 非捕获分组典型应用场景与案例4.2.1 限定多选匹配范围爬虫中常需要匹配多种前缀、多种格式的文本使用|或运算符实现多选结合非捕获分组限定多选范围避免多余捕获。python运行import re # 模拟网页链接文本包含http与https两种协议 url_text 官网地址https://www.python.org 备用地址http://www.csdn.net # 非捕获分组限定协议范围仅捕获域名部分 pattern r(?:http|https)://(.) result re.findall(pattern, url_text) print(提取域名, result)代码原理解析(?:http|https)为非捕获分组作用是限定匹配http或https两种协议仅作为匹配条件不会被单独提取。表达式中仅有(.)一个普通捕获分组因此findall仅返回域名内容协议部分被过滤实现精准提取目标字段。若此处使用普通分组(http|https)则结果会同时返回协议与域名两组数据造成数据冗余。4.2.2 结合数量限定符组合规则当一段组合规则需要重复匹配多次时使用非捕获分组将多个元字符封装为整体再搭配、*、{n}等限定符实现整体重复匹配。python运行import re # 模拟连续编号文本 code_text 编码序列(A01)(A02)(A03)(A04) # 非捕获分组封装单条编码规则整体重复匹配 pattern r\((?:A\d{2})\) result re.findall(pattern, code_text) print(完整编码片段, result)代码原理解析(?:A\d{2})将A加两位数字封装为整体规则非捕获分组保证该部分仅参与匹配不单独拆分。正则整体匹配括号包裹的编码片段一次性提取所有完整编码无需拆分内部字符符合业务提取需求。4.3 非捕获分组使用总结非捕获分组的核心定位是辅助匹配核心使用原则凡是仅用于划分匹配范围、组合规则、实现多选不需要单独提取内容的括号全部使用非捕获分组。该语法可以精简返回结果、减少无效数据存储是优化正则代码的重要手段在复杂组合规则中建议常态化使用。五、嵌套分组详解与复杂标签提取实战当网页存在多层嵌套 HTML 标签、多级分段文本、层级化字段时单层分组无法区分内外层数据此时需要使用嵌套分组即在一个分组内部再次定义新的分组按照层级划分捕获单元。嵌套分组是正则处理复杂嵌套内容的核心语法也是爬虫解析多层标签页面的必备技能。5.1 嵌套分组编号规则嵌套分组依旧遵循左括号优先编号原则正则引擎从左至右扫描字符每遇到一个左括号就分配一个新编号无论括号是否处于其他分组内部。简单总结编号顺序 左括号出现的先后顺序。5.2 单层嵌套分组实战HTML 双层标签提取模拟爬虫高频场景divspan目标内容/span/div双层嵌套标签使用嵌套分组分别提取外层整体内容与内层核心文本。python运行import re # 双层嵌套HTML源码 html_nest div classinfospan classtitlePython爬虫正则进阶教程/span/div # 外层分组包裹整体标签内层分组捕获span中的文本 pattern r(div.*?(span.*?(.?)/span)/div) match_obj re.search(pattern, html_nest) if match_obj: print(编号1外层完整div标签, match_obj.group(1)) print(编号2内层完整span标签, match_obj.group(2)) print(编号3span内部文本, match_obj.group(3))代码原理解析从左至右扫描左括号第一个左括号为分组 1第二个左括号为分组 2第三个左括号为分组 3编号依次生成。分组 1 捕获完整的 div 嵌套结构分组 2 捕获内部 span 完整标签分组 3 最终提取页面展示的文本内容三层分组实现层级拆分。所有子分组均使用非贪婪匹配.*?防止跨标签贪婪匹配导致内容错乱嵌套场景下非贪婪匹配为强制规范。5.3 多层嵌套分组综合案例模拟三层嵌套标签结合非捕获分组、普通嵌套分组实现不同层级数据分离还原真实复杂网页结构。python运行import re # 三层嵌套HTML结构 html_more_nest div data-id001 ul classlist li课程名称正则分组实战/li /ul /div # 正则规则非捕获分组辅助匹配属性嵌套分组分层捕获内容 pattern r(div(?:\s.*?)(ul(?:\s.*?)(li(.?)/li)/ul)/div) result re.search(pattern, html_more_nest, re.S) if result: print(div完整标签, result.group(1)) print(ul完整标签, result.group(2)) print(li完整标签, result.group(3)) print(最终文本内容, result.group(4))代码原理解析规则中(?:\s.*?)为非捕获分组用于匹配标签内的属性、空白字符仅辅助匹配不单独捕获精简分组数量。四层普通嵌套分组按照左括号顺序依次编号分别对应不同层级标签与文本。匹配跨多行内容因此添加re.S模式让.元字符匹配换行符保证嵌套标签完整匹配。多层嵌套场景下建议搭配在线正则测试工具先校验规则确认分组编号与捕获内容无误后再写入爬虫代码。5.4 嵌套分组优缺点与使用建议5.4.1 优势可以精准划分多层级文本、嵌套标签实现分层提取弥补单层分组无法处理嵌套结构的短板适配复杂网页解析需求。5.4.2 短板分组层级越多正则规则复杂度越高编号记忆难度增大代码可读性急剧下降同时多层嵌套正则调试难度高微小字符错误就会导致整体匹配失效。5.4.3 选型建议两层以内简单嵌套可直接使用嵌套分组灵活高效三层及以上深度嵌套标签、复杂层级结构不建议过度使用嵌套正则优先切换至 BeautifulSoup、lxml 等专业 DOM 解析库若业务强制使用正则处理多层嵌套必须搭配非捕获分组精简无效分组同时添加注释标注每一组分组用途。六、反向引用语法与爬虫数据清洗实战反向引用依托分组实现核心作用是复用前面分组已经匹配到的内容使用\分组编号引用对应分组的捕获结果。该语法在爬虫中主要用于清理重复字符、重复标签、对称符号、冗余重复文本是数据清洗的高阶工具。6.1 反向引用基础语法语法格式\数字数字为已定义的捕获分组编号运行逻辑正则引擎先执行前面的分组匹配记录捕获内容后续通过\数字引用该内容要求对应位置字符与分组内容完全一致。6.2 反向引用典型实战案例6.2.1 清理重复字符网页源码中常出现重复标点、重复空格、重复文字使用反向引用快速匹配并删除重复内容。python运行import re # 存在重复标点的文本 repeat_text 教程内容丰富 适合爬虫新手入门,,,,, 知识点全面 # 匹配连续重复的标点分组捕获单个标点反向引用匹配重复内容 pattern r([!,])\1 # 替换重复标点为单个字符 clean_text re.sub(pattern, r\1, repeat_text) print(清洗前, repeat_text) print(清洗后, clean_text)代码原理解析([!,])为捕获分组匹配感叹号、逗号任意一种标点并将字符存入分组 1。\1为反向引用代表匹配和分组 1 内容相同的字符且至少重复一次整体匹配连续重复标点。re.sub执行替换操作替换内容填写r\1即保留分组 1 的单个字符实现重复标点去重。该方案可批量清理全文档内的各类重复符号效率远高于 Python 原生字符串循环处理。6.2.2 匹配对称标签 / 对称符号部分网页存在自定义对称标签、首尾一致的包裹符号使用分组 反向引用可精准匹配成对内容。python运行import re # 被【】符号包裹的文本 symbol_text 【爬虫基础】【正则分组】【数据清洗】无用文本 # 分组匹配左符号反向引用匹配右符号 pattern r【(.?)】 result re.findall(pattern, symbol_text) print(提取符号内文本, result)代码原理解析 该案例为基础对称匹配拓展至动态对称符号场景若文本为#爬虫教程# 正则实战可编写规则r(.)(.?)\1分组 1 匹配首位符号\1反向引用匹配末尾相同符号实现动态对称符号内容提取。6.3 反向引用使用注意事项反向引用只能引用捕获分组无法引用非捕获分组编写规则时注意区分分组类型引用编号必须小于当前位置分组编号即只能引用前方已定义的分组不能引用后方未匹配的分组反向引用区分字符大小写、全角半角网页中英文、符号格式不统一时需搭配re.I等模式常量辅助匹配。七、综合实战复杂网页多字段 嵌套内容完整爬虫案例结合本章所学的普通分组、命名分组、非捕获分组、嵌套分组、反向引用整合网络请求、规则编写、数据提取、数据清洗全流程完成一套面向复杂静态网页的爬虫实战案例模拟电商栏目页多层标签、多字段、冗余重复内容的解析场景。7.1 案例需求模拟爬取电商栏目页 HTML 源码页面包含多层 div 嵌套、多商品混合字段利用分组语法一次性提取每个商品的标题、编号、原价、活动价、简介使用非捕获分组优化规则结构使用反向引用清理源码中的重复空格与标点对提取的数据进行结构化整理格式化输出结果。7.2 完整实战代码python运行import re import requests # 模拟网页源码包含嵌套标签、多字段、重复符号与空白 html_source div classgoods-box div classitem h3【Python爬虫入门教程】/h3 p商品编号GD20260601/p p原价199元 活动价99元/p span简介零基础快速掌握爬虫基础,,,,,/span /div div classitem h3【正则分组进阶实战】/h3 p商品编号GD20260602/p p原价169元 活动价89元/p span简介攻克复杂文本提取难点/span /div /div # 第一步预编译清洗规则反向引用清理重复标点与空格 clean_pattern re.compile(r([。, ])\1) html_clean clean_pattern.sub(r\1, html_source) # 第二步预编译数据提取规则结合嵌套分组、非捕获分组 # 非捕获分组匹配标签属性嵌套分组提取多字段 extract_pattern re.compile( rdiv(?:\sclassitem.*?) rh3【(?Ptitle.?)】/h3 rp商品编号(?Pgoods_id.?)/p rp原价(?Pold_price\d)元 活动价(?Pnew_price\d)元/p rspan简介(?Pdesc.?)/span, re.S ) # 全局匹配所有商品数据 data_list extract_pattern.findall(html_clean) # 第三步结构化输出数据 print( 复杂网页爬虫提取结果 ) index 1 for item in data_list: title, goods_id, old_price, new_price, desc item print(f第{index}件商品) print(f商品标题{title}) print(f商品编号{goods_id}) print(f原价{old_price} 元活动价{new_price} 元) print(f商品简介{desc}\n) index 17.3 代码分层原理详解数据清洗模块使用re.compile预编译清洗规则([。, ])\1通过分组 反向引用匹配连续重复的标点与空格sub方法将重复内容替换为单个字符完成源码预处理避免冗余符号干扰数据提取。提取规则模块整体规则拆分编写提升可读性(?:\sclassitem.*?)为非捕获分组仅匹配 div 标签属性不参与数据捕获核心字段全部采用命名分组语义化定义区分标题、编号、价格、简介五大字段。开启re.S模式适配跨多行的嵌套标签。数据提取与输出模块findall全局匹配所有商品模块返回元组列表通过循环解包字段格式化输出结构化数据。整套流程遵循「先清洗、再提取、后整理」的爬虫标准处理流程。7.4 案例拓展至线上真实网页将模拟源码替换为requests网络请求代码添加请求头、超时、编码设置即可直接应用于线上静态网页爬取拓展代码如下python运行import re import requests headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 } url https://target-static-page.com response requests.get(url, headersheaders, timeout10) response.encoding utf-8 html_source response.text # 后续清洗、提取、输出代码与上述案例完全一致八、正则分组常见错误、排错方案与综合选型规范8.1 分组高频错误及解决办法8.1.1 分组编号错乱现象group(编号)取值内容与预期不符。 原因嵌套分组、多分组场景下未遵循「左括号优先编号」规则编号记忆错误。 解决方案将正则规则放入在线测试工具查看分组编号对应内容再调整代码取值逻辑多分组场景优先改用命名分组。8.1.2 非捕获分组误用现象不需要的内容被大量提取结果冗余。 原因辅助匹配的括号使用了普通捕获分组。 解决方案仅做范围限定、多选匹配的括号统一改为(?:)非捕获分组。8.1.3 反向引用匹配失效现象无法匹配重复字符、对称内容。 原因引用了非捕获分组或引用编号大于当前已定义分组编号。 解决方案检查分组类型确保反向引用指向普通捕获分组引用编号小于当前位置。8.1.4 嵌套分组跨换行匹配失败现象多层嵌套标签无匹配结果。 原因未开启re.S模式.无法匹配换行符。 解决方案匹配函数或编译规则时添加re.S参数。8.2 分组综合选型规范爬虫工程化标准结合全部分组语法特性针对不同爬虫场景制定统一选型标准降低决策成本简单单字段提取无分组 / 单层普通捕获分组2~3 个字段同步提取普通捕获分组语法简洁高效4 个及以上字段、长期维护项目、团队协作命名分组保障代码可读性仅用于范围限定、多选、规则组合强制使用非捕获分组精简结果两层以内标签 / 文本嵌套嵌套分组三层及以上深度嵌套放弃正则分组改用 DOM 解析库重复字符、对称内容清洗分组 反向引用组合使用。8.3 正则分组开发通用规范所有分组正则统一使用原始字符串r规避转义问题解析标签类内容分组内部一律使用非贪婪匹配.*?同一规则重复调用循环爬取页面必须使用re.compile()预编译复杂分组规则编写完成后优先在在线正则测试工具完成校验再接入爬虫代码长规则正则按逻辑分段编写添加代码注释标注每个分组的作用。九、本章总结正则分组是基础正则的核心进阶能力也是处理爬虫复杂文本、多字段、嵌套内容的关键技术。本章系统讲解了普通捕获分组、命名分组、非捕获分组、嵌套分组、反向引用五大分组体系结合大量贴近真实业务的爬虫案例拆解语法逻辑、运行原理与落地用法。通过本章学习可实现以下能力提升一是区分不同分组类型的适用场景根据业务需求合理选型二是掌握多字段同步提取、嵌套标签解析、重复内容清洗等复杂数据处理能力三是规避分组使用过程中的高频错误建立规范的正则编码习惯。正则分组与基础元字符、限定符结合后正则表达式的解析能力已覆盖绝大多数轻量化爬虫场景。下一章节将基于现有正则知识讲解入门级爬虫代码的优化思路、性能调优、结构重构与代码精简方案进一步提升爬虫代码的工程质量与运行效率。