如何编写正则表达式实现多场景文本匹配及对应分组提取
正则表达式解决方案
你可以使用以下正则实现所有场景的匹配,自动区分字段分隔逗号和人名内部逗号:
支持Unicode字符的版本(适配Python/Java/Go等主流正则引擎)
([\p{L} '-]+ : [\p{L} '-]+(?:, [\p{L} '-]+)?)(?=, |$)
兼容旧正则引擎的版本(替换为你用到的法语特殊字符集)
([a-zA-Zàâçéèêëîïôûùüÿñæœ '-]+ : [a-zA-Zàâçéèêëîïôûùüÿñæœ '-]+(?:, [a-zA-Zàâçéèêëîïôûùüÿñæœ '-]+)?)(?=, |$)
匹配效果验证
测试用例1:Gérant : Jean-Pierre LEVENDEAIN, Associé : Toumiat, Farid
输出分组:
- Gérant : Jean-Pierre LEVENDEAIN
- Associé : Toumiat, Farid
如果需要保留第一个分组末尾的逗号,只需把正则调整为:
([\p{L} '-]+ : [\p{L} '-]+(?:, [\p{L} '-]+)?,?)(?= [\p{L} '-]+ :|$)
调整后第一个分组输出为Gérant : Jean-Pierre LEVENDEAIN,,完全匹配你的要求。
测试用例2:Gérant : Jean-Pierre, LEVENDEAIN, Associé : Toumiat, Farid
输出分组:
- Gérant : Jean-Pierre, LEVENDEAIN
- Associé : Toumiat, Farid
追加多职位场景测试
输入内容:
Président : Chateau, Nathalie, nom d'usage : Rudzinski, Directeur
général : Montmirel, Joëlle, nom d'usage : Ciocco, Directeur général
délégué : Rudzinski, Stéphane
输出分组:
- Président : Chateau, Nathalie
- nom d'usage : Rudzinski
- Directeur général : Montmirel, Joëlle
- nom d'usage : Ciocco
- Directeur général délégué : Rudzinski, Stéphane
内容的提问来源于stack exchange,提问作者Driss Najih
相关产品推荐
相关产品推荐

