3
從使用OR
,AND
運營商或背對背字符類的效率方面說起。風味vs效率
在下面的字符串數據。
1A
A1
$1
$$
以下表達式:
^[\w\W][\w\W]$
^(?:\w|\W)(?:\w|\W)$
^[\w&&\W](?:[\w&&\W])$
如何將一致性時生效這裏和真正的區別是什麼在這裏,除了個人的期望使用表達式的味道?
從使用OR
,AND
運營商或背對背字符類的效率方面說起。風味vs效率
在下面的字符串數據。
1A
A1
$1
$$
以下表達式:
^[\w\W][\w\W]$
^(?:\w|\W)(?:\w|\W)$
^[\w&&\W](?:[\w&&\W])$
如何將一致性時生效這裏和真正的區別是什麼在這裏,除了個人的期望使用表達式的味道?
使用http://regex101.com/正則表達式調試器,您可以看到模式匹配方式的差異。主要的區別在於速度:
^[\w\W][\w\W]$
需要6個步驟,以符合您的字符串中的一個^(?:\w|\W)(?:\w|\W)$
需要10個步驟,以符合您的一個字符串^[\w&&\W](?:[\w&&\W])$
需要8個步驟來匹配你的字符串當然,這高度依賴於正則表達式的風格,引擎的實現和可能的優化。
編輯:
^..$
需要6個步驟以及的步驟並不一定直接相關的速度但是在大多數情況下(數量,如果正則表達式是足夠瑣碎),可讀和更好的可維護正則表達式提供了更多的好處,然後節省xy微秒的速度(同樣取決於用例和輸入數據)。
這是我正在尋找的很多很好的答案之一。 – hwnd
恕我直言,這裏唯一顯着的區別是,第一個更快地閱讀和寫...'' – sp00m
@ sp00m不會'^ .. $'更快? = P – Jerry
第一個更短,但在我看來,3是瘋了。你最好寫下如下內容:'^(?s).. $'或'^ [\ s \ S] {2} $'。 –