Python正则表达式匹配法条条目问题:无法关联数字条目与后续字母
正则修正与实现方案
原正则表达式将数字条目和后续的字母后缀拆分为独立匹配项,导致119/1和 C被分别捕获,无法得到预期的整体条目。以下是修正后的方案:
修正后的正则表达式
\b\d{3}/\d{1,2}(?: [A-Z])?\b
正则解析
\b:单词边界,避免从长字符串(如5237SA)中误匹配部分数字片段\d{3}/\d{1,2}:匹配核心法条格式——3位数字+斜杠+1-2位数字(?: [A-Z])?:可选非捕获组,匹配条目后可能存在的「空格+单个大写字母」后缀,?表示该部分可省略
Python代码实现
1. 提取目标法条条目
import re raw_text = "5237SA 116/1 119/1 C 58/6 53/1 58 58/7." target_pattern = r'\b\d{3}/\d{1,2}(?: [A-Z])?\b' extracted_items = re.findall(target_pattern, raw_text) print(extracted_items) # 输出: ['116/1', '119/1 C']
2. 格式化为带括号的字符串
formatted_text = re.sub(target_pattern, r'(\g<0>)', raw_text) print(formatted_text) # 输出: 5237SA (116/1) (119/1 C) 58/6 53/1 58 58/7.
内容的提问来源于stack exchange,提问作者daaa
相关产品推荐
相关产品推荐

