定位一个组的调节问题
conditioning issue to locate a group
如何制作这个正则表达式
(\w|[-zàâçéèêëîïôûùüÿñæœ ])* :((\w|[-zàâçéèêëîïôûùüÿñæœ ])*, [\w]*){1}
同时分开两个测试:
测试:
Gérant : Jean-Pierre LEVENDEAIN, Associé : Toumiat, Farid
Gérant : Jean-Pierre, LEVENDEAIN, Associé : Toumiat, Farid
更新:
问题是我需要 1 个正则表达式来评估两行并生成这些组:
第一种情况:
- Gérant : Jean-Pierre LEVENDEAIN,
- 合伙人 : Toumiat, Farid
第二种情况:
- 热朗:让-皮埃尔,莱文丹
- 合伙人 : Toumiat, Farid
我发现的问题是,有时我的文本带有 A: B、C 或 A: B
我需要将两者作为一个组进行匹配
更新:
有一个测试用例我没有考虑
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
您可以使用
([^,\s][^,]*)\s*:\s*(.*?)(?=[^,]*:|$)
见regex demo。 详情:
([^,\s][^,]*)
- 第 1 组:逗号和空格以外的字符,然后是零个或多个非逗号字符
\s*:\s*
- 用零个或多个空格括起来的冒号
(.*?)
- 第 2 组:除换行字符外的任何零个或多个字符尽可能少
(?=[^,]*:|$)
- 与紧随其后的位置相匹配的正面前瞻
[^,]*:
- 零个或多个非逗号,然后是 :
char
|
- 或
$
- 字符串结尾。
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)
}
如何制作这个正则表达式
(\w|[-zàâçéèêëîïôûùüÿñæœ ])* :((\w|[-zàâçéèêëîïôûùüÿñæœ ])*, [\w]*){1}
同时分开两个测试:
测试:
Gérant : Jean-Pierre LEVENDEAIN, Associé : Toumiat, Farid
Gérant : Jean-Pierre, LEVENDEAIN, Associé : Toumiat, Farid
更新:
问题是我需要 1 个正则表达式来评估两行并生成这些组:
第一种情况:
- Gérant : Jean-Pierre LEVENDEAIN,
- 合伙人 : Toumiat, Farid
第二种情况:
- 热朗:让-皮埃尔,莱文丹
- 合伙人 : Toumiat, Farid
我发现的问题是,有时我的文本带有 A: B、C 或 A: B 我需要将两者作为一个组进行匹配
更新:
有一个测试用例我没有考虑
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
您可以使用
([^,\s][^,]*)\s*:\s*(.*?)(?=[^,]*:|$)
见regex demo。 详情:
([^,\s][^,]*)
- 第 1 组:逗号和空格以外的字符,然后是零个或多个非逗号字符\s*:\s*
- 用零个或多个空格括起来的冒号(.*?)
- 第 2 组:除换行字符外的任何零个或多个字符尽可能少(?=[^,]*:|$)
- 与紧随其后的位置相匹配的正面前瞻[^,]*:
- 零个或多个非逗号,然后是:
char|
- 或$
- 字符串结尾。
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)
}