2012-02-17 99 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