用正则表达式进行特定拆分

时间:2018-03-04 17:35:22

标签: javascript regex

我有这个正则表达式,它是一个例子:

/par(tir|te|s)|(quitter.*maison)|((heure|quand).*(rendez-vous|journée))/i

我想把它拆分为" |"在正则表达式中,但此字符不能位于爆炸的括号内。所以预期的结果必须是:

1: par(tir|te|s)
2: (quitter.*maison)
3: ((heure|quand).*(rendez-vous|journée))

我的思绪陷入困境,有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

this old question的大力帮助下,我能够构建this regex。它将括号与其内容相匹配,包括前面的文字:

(?:\w+)?\((?:[^()]*|\((?:[^()]*|\([^()]*\))*\))*\)

但是我必须说嵌套括号很难处理正则表达式。

答案 1 :(得分:0)

你可以拆分这个正则表达式,它可以精确地实现你从提供的输入样本中指定的输出:

/\|(?!(?:\w+\|?)+\))/ig

答案 2 :(得分:0)

您可以尝试使用此正则表达式/\|(?![^\(]*\))/g

const str = '/par(tir|te|s)|(quitter.maison)|((heure|quand).(rendez-vous|journée))/i';
console.log(str.split(/\|(?![^\(]*\))/g));