如何使用Regex识别唯一小数点后数字实现文本按章节分组匹配?
按章节主编号分组匹配文本的正则方案
你需要把小数点后主编号相同的章节(比如1.21-1、1.21-2、1.21-3)归为同一个匹配组,核心是利用反向引用识别后续章节的主编号是否和当前组一致,只在主编号变化时分割。
最终正则表达式
启用**多行模式(MULTILINE)**后,使用以下正则:
(^§\s1\.(\d{1,4}).+?)(?=^§\s1\.(?!\2)\d{1,4})|^§\s1\.(\d{1,4}).+$
正则拆解
^§\s1\.(\d{1,4}):匹配章节开头,捕获小数点后的主编号(比如11、15、21)到分组2.+?:非贪婪匹配当前组内的所有文本,避免过度匹配到其他组(?=^§\s1\.(?!\2)\d{1,4}):正向预查,确保下一个章节的主编号和当前组(分组2)的主编号不同,触发分割|^§\s1\.(\d{1,4}).+$:单独匹配最后一个章节组(因为它后面没有后续章节,不需要预查)
匹配效果验证
针对你的示例文本,会得到3个匹配结果:
- 包含
§ 1.11-1的所有内容 - 包含
§ 1.15-1的所有内容 - 包含
§ 1.21-1、§ 1.21-2、§ 1.21-3的所有内容
内容的提问来源于stack exchange,提问作者user22141577
相关产品推荐
相关产品推荐

