如果Ruby正則表達式與非String字符串匹配,則會在該對象上調用to_str
方法以獲取與之匹配的實際字符串。我想避免這種行爲;我希望將正則表達式與不是Strings的對象進行匹配,但可以邏輯地將其視爲可隨機訪問的字節序列,並且通過byte_at()
方法(類似於Java的CharSequence.char_at()
方法的精神)調解對它們的所有訪問。在沒有轉換的情況下將正則表達式與Ruby中的非字符串進行匹配
例如,假設我想在任意正則表達式的任意文件中查找字節偏移量;表達式可能是多行的,所以我不能一次只讀一行,並在每行中尋找匹配。如果文件非常大,我無法將它全部放在內存中,所以我不能只將它看作一個大字符串。但是,定義一個獲取文件第n個字節的方法(根據速度需要使用緩衝和緩存)將會非常簡單。最後,我想要構建一個全功能的rope類,就像在Ruby Quiz #137中一樣,我希望能夠對它們使用正則表達式,而不會將性能損失轉換爲字符串。
我不想在Ruby的正則表達式實現的內部找到我的胳膊肘,所以任何見解都將不勝感激。
當你大聲讀出它時,它仍然聽起來像個好主意? – 2009-10-26 01:45:02
我同意我可能不會在Ruby中實現第一個例子,但我認爲有一個非字符串的正則表達式接口是一個好主意。 – Bkkbrad 2009-10-26 01:55:46