2014-05-16 45 views
0

我不是正直表達式。正則表達式意義'[:*] +'並與LINQ請求進行比較

你能解釋一下那條規則嗎?

str = Regex.Replace(str, "[:*]+", ""); 

能不能做到容易/與LINQ請求或用一個簡單的str.replace()快?

+4

收藏本頁:http://rick.measham.id.au/paste/explain.pl –

+1

既不容易,也不快。您將需要多個替換調用,這會創建多個臨時字符串。 LINQ會更糟,因爲它首先將字符串轉換爲char數組,然後對其進行過濾並重新構建它。在任何情況下,這隻適用於微不足道的情況,因爲任何更復雜的事情(例如檢查兩個或兩個以上的字符)將需要複雜的代碼 –

+0

Jeffrey EF Friedl有一本很棒的書,*精通正則表達式*(O'Reilly&夥伴),我敦促你閱讀。正則表達式對程序員來說是一項非常重要的技能,可以學習如何使用它。 –

回答

3

[]定義了一組可以填充該點的字符,而+表示它是其中的一個或多個。這將匹配任何系列的:和*字符。例如*或者:*:或:。它將採取任何與之相匹配的內容並將其刪除,因爲它沒有任何內容替換它們。

至於更快的方法來做到這一點。特別是如果您不止一次地執行此操作並且/或者可以編譯正則表達式以便多次使用,那麼這正是Regex旨在快速高效地處理的事情。

+0

好的謝謝。我雖然*是正則表達式中的一個特殊字符,但是當你描述這個規則時,它可能不是[]中的特殊字符。 – wytes

+0

@wyles correct,inside []它只是組成您定義的角色類的字符列表。一個模式在[]中沒有任何意義。 –