R语言如何从首个方括号、末尾圆括号拆分法律引用字符串
法律引注字段拆分正则实现方案
核心匹配正则
使用支持贪婪/非贪婪匹配的通用正则即可完成四个字段的一次性拆分,正则表达式如下:
^(.+?)\s*\[(\d{4})\]\s*(.+)\s*\(([^()]+)\)\s*$
正则共设置4个捕获组,按顺序对应需要拆分的四个字段:
- 捕获组1:案件双方名称,采用非贪婪匹配规则,从字符串起始位置匹配到首个方括号(即年份括号)前截止,兼容案件名内部带圆括号的场景
- 捕获组2:裁判年份,匹配首个方括号内的4位数字内容
- 捕获组3:引注数据,采用贪婪匹配规则,匹配年份方括号闭合后到最后一个圆括号前的所有内容,兼容引注内部带方括号、圆括号的场景
- 捕获组4:权威裁判机构,匹配字符串末尾最后一个圆括号内的无嵌套括号内容
代码使用示例(Python)
import re # 测试引注字符串 test_citation = "Lubrizol Corporation, USA v. Asstt. DIT (International Taxation) [2013] 33 taxmann.com 424/60 SOT 118 (URO) (Mum. Trib.)" # 编译正则 citation_pattern = re.compile(r'^(.+?)\s*\[(\d{4})\]\s*(.+)\s*\(([^()]+)\)\s*$') match_res = citation_pattern.match(test_citation) if match_res: case_name, judge_year, citation_data, authority = match_res.groups() # 输出结果与预期完全一致 print(case_name) # 输出:Lubrizol Corporation, USA v. Asstt. DIT (International Taxation) print(judge_year) # 输出:2013 print(citation_data)# 输出:33 taxmann.com 424/60 SOT 118 (URO) print(authority) # 输出:Mum. Trib.
适配前提说明
该正则可正常工作的前提符合给定格式约定:
- 字符串中第一个出现的方括号对固定包裹4位数字的裁判年份,案件名称段内部不会出现
[四位数字]格式的内容- 字符串末尾的最后一个圆括号对内部不存在嵌套圆括号,固定存储权威裁判机构信息
- 全字符串首尾无多余干扰字符
内容的提问来源于stack exchange,提问作者Eva
相关产品推荐
相关产品推荐

