RegEx是否可以根据不同的捕获组具有条件表达式?

时间:2018-04-10 15:18:29

标签: regex

我有以下URLs

www.domain.com/hello-username-world
www.domain.com/welcome-username-back

slash /之后的部分有以下 RegEx

([^-]+)-([^-]+)-(world|back)

我想要做的是,如果第一组([^-]+)hello,那么只接受第三组中的world,如果它是welcome,那么只有back {1}}

像这样 RegEx

((hello-([^-]+)-world)|(welcome-([^-]+)-back)|)

但无需定义first group值,并使third group取决于first group的值

可以使用单个RegEx吗?

1 个答案:

答案 0 :(得分:1)

你可以试试这个

[^\n]*?(?:(hello)|(welcome))[^\n]*(?(1)world|(?(2)back))

Demo ,,,尝试匹配并捕获hellowelcome并分别检查模式worldback以获取捕获结果。