非常簡單。什麼是最快的正則表達式將返回真正的任何輸入?C#。最快的正則表達式匹配任何字符串
編輯:爲什麼倒票?似乎是一個非常合理的問題。我使用了一個採用正則表達式過濾器的函數,我想知道什麼能夠最快速地匹配所有內容。 「不使用正則表達式」不是答案。
非常簡單。什麼是最快的正則表達式將返回真正的任何輸入?C#。最快的正則表達式匹配任何字符串
編輯:爲什麼倒票?似乎是一個非常合理的問題。我使用了一個採用正則表達式過濾器的函數,我想知道什麼能夠最快速地匹配所有內容。 「不使用正則表達式」不是答案。
class FastestRegex
{
public static readonly Regex RE = new Regex("", RegexOptions.Compiled);
}
只需要注意一下它,但你可能只需使用.NET內部正則表達式緩存並堅持正則表達式的靜態函數 – LorenVS 2011-02-28 20:45:18
@LorenVS:這取決於你創建了多少個正則表達式,以及你的規模大小已經設置了正則表達式緩存。但是你知道**這個將被重用,所以爲什麼不手動緩存呢? – 2011-03-01 00:47:55
我要說的是,它必須是這樣的
.*?
這將檢查與任何字符匹配,但是因爲懶運營商,就根本沒有字符串相匹配。我想它甚至會在檢查第一個字符之前返回。這是假設空字符串不會爲所有輸入返回true。
我猜想,無論是空字符串,""
,或啓動的輸入,"^"
,將導致最快的(正)匹配任何字符串。
您應該自己嘗試一下:運行一些快速測試,"^"
的模式通常比Oracle的1.6 JRE上的""
快,但在Mono 2.4上則相反。在這兩種情況下,.*?
是方式較慢。
但是,再次測試一下你自己的系統。
沒有最快的正則表達式從不運行正則表達式。因此,最快的正則表達式就是實際運行的正則表達式。 /[\S\s]?/
或者,我猜這是更快/.?/s
插件 - Interresting雖然/^/
PERL環路分數更快圈3000萬次。但是,預編譯所有的正則表達式首先會將它們放慢5倍。去圖。也許是因爲它太簡單了。
你有沒有想過這個?我聽起來像巧克力茶壺一樣有用。 – 2011-02-28 20:39:47
...不使用正則表達式? – 2011-02-28 20:40:05
什麼現實世界的情景引發了這個問題? – Oded 2011-02-28 20:40:53