如果 Ruby 正则表达式匹配非字符串,to_str
则在该对象上调用该方法以获取要匹配的实际字符串。我想避免这种行为;我想将正则表达式与不是字符串的对象进行匹配,但在逻辑上可以被认为是随机可访问的字节序列,并且对它们的所有访问都是通过一种byte_at()
方法进行调解的(在精神上类似于 Java 的CharSequence.char_at()
方法)。
例如,假设我想在任意正则表达式的任意文件中查找字节偏移量;该表达式可能是多行的,因此我不能一次只读取一行并在每一行中查找匹配项。如果文件很大,我不能把它全部放在内存中,所以我不能把它作为一个大字符串读入。但是,定义一个获取文件第 n 个字节的方法(根据速度需要进行缓冲和缓存)就足够简单了。
最终,我想构建一个功能齐全的绳索类,就像在Ruby Quiz #137中一样,并且我希望能够在它们上使用正则表达式,而不会因为将它们转换为字符串而造成性能损失。
我不想在 Ruby 的正则表达式实现的内部陷入困境,所以任何见解都将不胜感激。