2012-02-17 129 views
4

我有4个复杂的正则表达式模式,AB,CD。我需要找到格式为A(B AND C AND D)的所有模式,其中B,C,D的顺序无关紧要,CD是可选的。有没有办法在正则表达式中做这样的事情,而没有写出B,C,D或(|)之间的所有可能的排列?正则表达式匹配无特定顺序的组

我正在用Java编程,而且更喜欢性能友好。谢谢!

编辑:将3个复杂的模式更改为4个复杂的正则表达式模式。

+0

是A,B,B,B是可以接受的结果吗? – ohaal 2012-02-17 09:29:57

+1

当然没有。他写道:“他们之间没有写出所有可能的B,C,D和或(|)的排列组合?”这意味着ABBB不是一个有效的正则表达式。 – shift66 2012-02-17 09:34:27

+0

我被A(B和C和D)弄糊涂了,然后立即说C和D是可选的。 – ohaal 2012-02-17 09:39:32

回答

3

不可以。您必须编写所有的排列组合。这是正规语言的限制。然而,一旦你做到了,它将像其他任何正则表达式一样表现友好。

+0

您能否详细说明“与其他任何正则表达式一样友好”的含义?看来,检查所有的排列是非常重要的性能... – apines 2012-02-17 11:16:58

+0

这就是正则表达式的美丽。您只支付您检查的字符数量,而不是正则表达式的大小。正则表达式的大小将“仅”影响“Pattern.compile()”运行所花费的时间以及该“Pattern”对象所使用的内存。如果你想了解更多查看Wikipedia上的常规语言和有限状态机。 – Johannes 2012-02-17 11:56:57

+0

在我大一的时候接受了这门课程;)谢谢! – apines 2012-02-17 12:07:50