簡體   English   中英

正則表達式的復雜性是什么?

[英]What is the complexity of regular expression?

在字符串上執行正則表達式比較時,字符串長度的復雜度是多少?

答案取決於“正則表達式”的確切含義。 可以將經典正則表達式編譯確定性有限自動機 ,該自動機可以在O(N)時間中匹配長度為N的字符串。 正則表達式語言的某些擴展使情況變得更糟。

您可能會發現以下感興趣的文檔: 正則表達式匹配可以簡單又快速

無界-您可以在空的輸入字符串上創建一個永不終止的正則表達式。

如果您使用常規(TCS:無后向引用,並置,交替,Kleene星號)正則表達式且已編譯正則表達式,則其為O(n)。

如果您要在RegEx上尋找嚴格的漸近邊界(不考慮表達式本身),則沒有一個。 正如Alex所指出的,您可以創建O(1)或Omega(infinity)的正則表達式。 作為一種純粹的數學算法,正則表達式引擎過於復雜,無法執行任何形式的形式漸近分析(除了這樣的分析基本上毫無價值的事實)。

特定表達式的增長率(因為實際上確實構成了算法),盡管沒有必要更容易分析,但它的意義要大得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM