如何使这个正则表达式
(w|[-zàâçéèêëîïôûùüÿñæœ ])* :((w|[-zàâçéèêëîïôûùüÿñæœ ])*, [w]*){1}
同时分离两个测试:
测试:
Gérant : Jean-Pierre LEVENDEAIN, Associé : Toumiat, Farid
Gérant : Jean-Pierre, LEVENDEAIN, Associé : Toumiat, Farid
更新:
问题是我需要一个正则表达式来计算这两行并产生这些组:
第一个例子:
- gsamant: Jean-Pierre LEVENDEAIN,
- 关联:Toumiat, Farid
第二个案例:
- gsamant: Jean-Pierre, LEVENDEAIN
- 关联:Toumiat, Farid
我发现的问题是,有时我有A: B, C或A: B的文本并且我需要将两者作为一个组进行匹配
更新:
有一个我没有考虑的测试用例
总统:Chateau, Nathalie,化名:Rudzinski,导演gcv: monmirel, Joëlle,使用名称:Ciocco, ccv主任dsm: Rudzinski, stapine
可以使用
([^,s][^,]*)s*:s*(.*?)(?=[^,]*:|$)
参见regex演示。细节:
([^,s][^,]*)
-组1:除逗号和空格以外的字符,然后是零个或多个非逗号字符s*:s*
—由零个或多个空格包围的冒号(.*?)
-组2:除换行符外,任何零或多个字符尽可能少(?=[^,]*:|$)
-与紧接在后面的位置匹配的正向前看[^,]*:
-零或多个非逗号,然后是:
字符|
-或$
-字符串结束
JavaScript演示:
const re = /([^,s][^,n]*)s*:s*(.*?)(?=[^,n]*:|$)/gm
const text = `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.`
const matches = Array.from(text.matchAll(re), x => [x[1].trim(), x[2].trim()])
for (const x of matches) {
console.log(x)
}