如何合并正则表达式组匹配?

时间:2016-08-05 11:35:37

标签: regex

假设我有以下一行:

one two three

是否可以编写一个将在下面返回的正则表达式?

one three

我当然可以将每个部分放在一个单独的组中,但是可以在一次匹配中捕获它吗?

1 个答案:

答案 0 :(得分:2)

简单地说:不,它无法完成(正如您对原始问题的评论中所讨论的那样)。

为了找出原因,让我们更一般地看一下。正则表达式可以建模为(通常是复杂的)deterministic finite automaton,也称为DFA,并且您的平均正则表达式引擎实现为一个。这意味着正则表达式将一次剔除零个或一个字符,并查看它是否与当前令牌匹配。如果不是,它将回溯并尝试在当前阶段匹配任何可能的令牌(完成交替操作|)。如果无法,它会停止并报告它无法匹配。由于DFA按顺序对输入进行操作,因此根据定义,您所要求的内容基本上是不可能的。