而不是測試所有或語句,它會看看第一個字符是否匹配。標題解釋了這一切。是否有程序或方法自動將ab | ac | an | db | df更改爲(a(b | c | n)| d(b | f))
-5
A
回答
1
處理正則表達式時,它首先轉換爲非確定性有限狀態自動機(NFA)。然後,將NFA轉換成確定性有限狀態自動機(DFA),這通常導致更多的狀態。第三步是將DFA轉換爲狀態數最少的「最小」DFA。 當且僅當它們導致相同的最小DFA時,兩個正則表達式纔是等價的。因此,兩個正則表達式ab|ac|an|db|df
和(a(b|c|n)|d(b|f))
明顯相同,會導致相同的最小DFA,並且會以相同的速度執行模式匹配。沒有什麼特別的理由可以選擇一個。
相關問題
- 1. 從{a-b,b-c,c-a}改變爲{(a,b),(b,c),(c,a)}?
- 2. SQL條件:(A = B AND C LIKE%D%)或(A LIKE%B%和C = D)
- 3. 使用java將字符串[] str = {「a」,「b」,「c」,「d」,「e」,「f」}映射爲{a = b,c = d,e = f}流
- 4. 如何寫A :: B :: C => D給定A :: B :: C和(A,B,C)=> D?
- 5. 加入2所列出得到(A,d,B,E,C,F),而不是(A,B,C,d,E,F)
- 6. 如果我有關係R(A,B,C,D,E)和FD是A→C,AB→D,CD→E,E完全依賴於AB?
- 7. XSLT樣式表如何執行(a + b)(c + d)= ac + ad + bc + bd
- 8. 用a * pow(b,N)替換a * b ** N
- 9. 類型參數(F:((A,B))⇒B)(隱式CMP:訂貨[B]):(A,B)
- 10. {a,b,c,d,e} a,b-> c,a,b-> d和d-> e的最高範式是什麼?
- 11. ab是一個數字,找到(a + b)^ n = ab
- 12. ORMlite QueryBuilder其中A和B和C和(D或E或F)
- 13. 如何分割F [A \/B]進入(F [A],F [B])
- 14. 測試非整數是否在範圍[a,b) - 或[a,b],(a,b),(a,b)
- 15. 爲什麼`a == b或c或d`總是評估爲True?
- 16. 如果A和B是單子,如何將A [B [C]]轉換爲B [A [C]]?
- 17. (a/b)mod n爲大數?
- 18. 更換爲B,或B對於A
- 19. 如何讓mod rewriteconds做'(A和B)或(C和D)'而不是'A和(B或C)和D'?
- 20. 爲什麼a.compareTo(b)等於compareTo(a,b)或a.method(b)= method(a,b)?
- 21. 爲什麼流水作業對於(a + b)+(c + d)比對a + b + c + d更好?
- 22. 對稱字典其中d [a] [b] == d [b] [a]
- 23. Scala中f(a,b)和f(a)(b)之間的區別
- 24. 爲條件執行MCDC(A && B && C)|| D
- 25. 變換 'A => F [G [B]]' 到 'F [G [A => B]' 階
- 26. 合併路徑與Python,從/ A/B/C + C/d到/ A/B/C/d
- 27. Git的變基A-B-C-d:父有小孩B和小孩C,和兩個B&C是d
- 28. Javascript語法:a!= b &&(c = b)
- 29. 簡化布爾表達式(a *'b *'c)+('a *'b * c)+('a * b *'c)+(a *'b * c)
- 30. A,B,C,D分組內的不同的E,F?
用於什麼?這只是關於任意字符串的字符串操作,還是你想寫第一種形式並讓第二種形式的正則表達式引擎運行?如果是後者,那聽起來就像要優化正則表達式編譯,這是一個龐大而複雜的領域。 – lxop
請在[help]中花費一些時間,特別是在[ask]中。當你這樣做時,你可以回來並且編輯你的問題,以明確你想要做什麼,包括你自己努力解決問題,解釋你遇到的困難,並要求* *具體**問題,我們可以嘗試幫助。一個只包含標題和*標題的問題表明,所有內容在這裏都不起作用。如果您不值得您提出一個體面的問題,我們的努力肯定不值得回答。 –
@Ixop這是第一個。 – weeeeeee