當我編寫用於文本解析的Erlang程序時,我經常遇到使用正則表達式進行模式匹配的情況。如何使用正則表達式來執行Erlang模式匹配?
例如,我希望我可以做這樣的事情,在那裏〜是一個「由」正則表達式匹配操作:
my_function(String ~ ["^[A-Za-z]+[A-Za-z0-9]*$"]) ->
....
我知道的正則表達式模塊(重),但據我所知,你不能在模式匹配或警衛時調用函數。
另外,我希望匹配的字符串可以以不區分大小寫的方式完成。這很方便,例如,解析HTTP頭時,我很樂意做這樣的事情,其中「海峽〜{模式,選項}」,「使用選項選項阻止圖形模式匹配海峽」的意思是:
handle_accept_language_header(Header ~ {"Accept-Language", [case_insensitive]}) ->
...
兩個問題:
你如何使用標準的Erlang來處理這個問題?在簡潔性和易讀性方面,是否有一些機制/編碼風格與此接近?
是否有任何工作(EEP?)在Erlang進行解決?
我懷疑一個EEP添加正則表達式,因爲模式將被支持。所有當前模式都可以在恆定時間內評估,正則表達式不能。 (長度/ 1或許是唯一例外的常量時間規則) – archaelus 2009-11-03 12:47:36