2012-12-24 83 views
0

如何解決兩個正則表達式的交集,如下:關於正則表達式的操作?

(01*10*) ∩ (10*01) = {}=φ (how ?) 
(0*1*1)* ∩ (1*0*0)* = {ε} 

二重和聯盟列爲:

(a*b)*U(ba*)* = (a+b)* (how ?) 

還請解釋來解決正則表達式操作的一般方法。 (任何鏈接都會有幫助)

謝謝。

+1

來自'[regex]'標籤描述:__Please包含一個標籤,指定您正在使用的編程語言或工具,以及此標籤.__ –

+0

@LevLevitsky - 這個問題似乎大多是與實現無關的。雖然可能對cs.stackexchange.com更合適。 –

+0

@ acheong87這個問題似乎與實現無關,但答案可能不是。例如,您的答案不適用於所有語言。 –

回答

0

對於路口,有向前看符號:

(?=01*10*)(?=10*01) 

工會,有交替:

(a*b)*|(ba*)* 

我沒有給你一個一般的鏈接,但其他業務可以分解這些加負面看法。

+0

Lookaheads不提供保證兩個分支的長度都是相同的。 –

+0

'(?= a)(?= aa)'會匹配'aa','a∩aa'不會。 –

+0

@JanDvorak - 恩,好點。但是,也許'∩aa''應該匹配'aa'?如果每個原子都是一個正則表達式,那麼兩個原子都匹配,不是嗎?如果我們僅僅意味着匹配沒有跟着另一個'a'的'a',那麼表達式是不是'a [^ a]∩aa'?或者,如果我們希望匹配完整的字符串,那麼就說'^ a $∩^ aa $'。在這種解釋中,前瞻就足夠了。但我不知道什麼是正確的解釋。 –