如何在正则表达式中用不同的文本替换不同的匹配组
How to replace different matching groups with different text in Regex
我有以下文字:
dangernounC2
cautionnounC2
alertverbC1
dangerousadjectiveB1
我需要的输出是:
danger (n)
caution (n)
alert (v)
dangerous (adj)
如果列表是,例如,所有名词或所有动词等,我会知道如何做到这一点,但是有没有办法用不同的对应文本替换每个匹配组?
这是适合您的正则表达式。但这是一种只有在这种替换是匹配的一部分时才有效的技巧。
正则表达式
(n)ounC2|(v)erbC1|(adj)ectiveB1
换人
()
Use ()
instead if you're using Python
说明
(n)ounC2|(v)erbC1|(adj)ectiveB1
将匹配 nounC2
、verbC1
或 adjectiveB1
当它匹配nounC2
时,第1组将包含n
,第2组和第3组不包含任何内容
当它匹配 verbC1
时,第 2 组将包含 v
,第 1 组和第 3 组不包含任何内容
当它匹配 adjectiveB1
时,第 3 组将包含 adj
,第 1 组和第 2 组不包含任何内容
每个匹配项都替换为 space,后跟括号之间的 3 个组的值。
演示
代码片段(JavaScript)
const regex = /(n)ounC2|(v)erbC1|(adj)ectiveB1/gm;
const str = `
dangernounC2
cautionnounC2
alertverbC1
dangerousadjectiveB1
eatverbC1
prettyadjectiveB1`;
const subst = ` ()`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
我有以下文字:
dangernounC2
cautionnounC2
alertverbC1
dangerousadjectiveB1
我需要的输出是:
danger (n)
caution (n)
alert (v)
dangerous (adj)
如果列表是,例如,所有名词或所有动词等,我会知道如何做到这一点,但是有没有办法用不同的对应文本替换每个匹配组?
这是适合您的正则表达式。但这是一种只有在这种替换是匹配的一部分时才有效的技巧。
正则表达式
(n)ounC2|(v)erbC1|(adj)ectiveB1
换人
()
Use
()
instead if you're using Python
说明
(n)ounC2|(v)erbC1|(adj)ectiveB1
将匹配 nounC2
、verbC1
或 adjectiveB1
当它匹配nounC2
时,第1组将包含n
,第2组和第3组不包含任何内容
当它匹配 verbC1
时,第 2 组将包含 v
,第 1 组和第 3 组不包含任何内容
当它匹配 adjectiveB1
时,第 3 组将包含 adj
,第 1 组和第 2 组不包含任何内容
每个匹配项都替换为 space,后跟括号之间的 3 个组的值。
演示
代码片段(JavaScript)
const regex = /(n)ounC2|(v)erbC1|(adj)ectiveB1/gm;
const str = `
dangernounC2
cautionnounC2
alertverbC1
dangerousadjectiveB1
eatverbC1
prettyadjectiveB1`;
const subst = ` ()`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);