如何通过正则识别法律文本中公司名并去除匹配结果尾部空格
意大利官方法律文本公司名提取正则优化方案
问题原因
原有正则azienda|societa'\s+([\w\s-]+) ha存在两个核心问题:
- 或逻辑优先级错误:未做分组的情况下,规则会被解析为「单独匹配
azienda,或者匹配societa'\s+([\w\s-]+) ha」,会漏掉azienda开头的公司名称场景 - 捕获组内的
[\w\s-]+为贪婪匹配模式,会把公司名称主体和后续助词ha之间的所有空白字符都纳入捕获范围,导致返回结果末尾携带1-2个多余空格
优化后正则
(?:azienda|societa')\s+([\w-]+(?:\s+[\w-]+)*)\s+ha
改动说明
- 用非捕获组
(?:azienda|societa')包裹两个触发关键词,修正或逻辑的优先级问题,两种开头的场景都能正常匹配 - 重构捕获组匹配逻辑为
[\w-]+(?:\s+[\w-]+)*:先匹配由字母、数字、连字符组成的名称片段,后续可重复匹配「1个以上空白+新的名称片段」的结构,从规则层面杜绝了捕获组末尾带空白的问题,同时也能保留公司名内部原本存在的多空格间隔 - 在捕获组和结尾助词
ha之间单独增加\s+匹配两者间隔的空白,这部分内容不会进入捕获组
匹配效果验证
针对提供的《Gazzetta Ufficiale》文本片段,优化后正则的捕获组返回结果为Orpha-Devel Handels Und Vertriebs GMBH,无尾部多余空格,符合精准提取要求。
内容的提问来源于stack exchange,提问作者Robert Alexander
相关产品推荐
相关产品推荐

