You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

优化正则表达式以精准匹配巴西葡萄牙语立法引用

巴西葡萄牙语立法引用正则表达式优化方案

问题概述

需要匹配巴西葡萄牙语的立法引用,有效格式包括:

  • Lei 11.738/2008
  • Lei nº 9.394/96
  • Lei Estadual nº 6.834
  • Lei 5.539/2009
  • Decreto 30.825/2002
  • Lei 1614 de 21 de janeiro de 1990
  • art. 1.039 do CPC/2015
  • lei nº. 1.060/50
  • art.334, § 5º do CPC
  • artigo 85, §11º, do CPC

现有正则存在以下问题:

  • 捕获无效内容(如lei nº.、lei.、CPC.)
  • 误捕引用末尾的句号(如LEI FEDERAL Nº 11.738/2008.)
  • 无法匹配部分有效格式

优化后的正则表达式

(?<LEGISLACAO>(?:art(?:\.|igos?)\s*[\d\.º]+(?:,\s*(?:caput|§)\s*[\dº]*)*\s*d[oa]\s+)*?(?:(?:lei(?:\s+(?:estadual|nacional|federal))?|decreto|N?CPC)\s*(?:n[º\.])?\s*[\d\.\/º]+)(?:\s*de\s*\d{1,2}\s*de\s*(?:janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)\s*de\s*\d{2,4})?)(?=\s|$|\.|\,|\;|\:)

关键改进点

1. 避免无效内容捕获

  • 将可选的编号前缀规则改为(?:n[º\.])?,确保只有完整的前缀(如nº、n.、nº.)才会被匹配,且后面必须紧跟有效编号,不会单独捕获lei nº.这类无编号的无效内容。
  • 通过整体结构约束,确保编号部分[\d\.\/º]+至少包含一个数字,避免匹配lei.或CPC.这类空引用。

2. 防止误捕末尾标点

  • 添加正向预查(?=\s|$|\.|\,|\;|\:),确保匹配结束位置是空白、字符串结尾或常见标点符号,但不会把标点包含在匹配结果中,解决误捕末尾句号的问题。

3. 支持更多有效格式

  • 在条款(art)部分:
    • 允许art.和数字之间无空格(如art.334),将固定空格\s改为可选空格\s*。
    • 支持多章节引用(如, §11º),调整为(?:,\s*(?:caput|§)\s*[\dº]*)*,允许重复的章节项,兼容仅caput无编号的场景。
    • 允许do前有逗号(如artigo 85, §11º, do CPC),调整结构适配此类格式。
  • 支持nº.这类前缀变体(如lei nº. 1.060/50),通过(?:n[º\.])?覆盖所有合法前缀形式。

测试覆盖效果

  • 有效匹配:所有示例格式,包括之前无法匹配的lei nº. 1.060/50、art.334, § 5º do CPC、artigo 85, §11º, do CPC。
  • 拒绝无效:lei nº.、lei.、CPC.不会被捕获。
  • 排除末尾标点:LEI FEDERAL Nº 11.738/2008.仅匹配到LEI FEDERAL Nº 11.738/2008。

内容的提问来源于stack exchange,提问作者celsowm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:51:02