是否有支持逐个字符解析正则表达式的语言或工具?
我认为这可能等同于“流上的正则表达式”,这似乎是即将发布的Perl版本6的特性之一。
基本上,我之所以要这样做,是因为我正在构建一个在伪终端上执行终端流转换的工具,我突然想到,应该通过允许指定regex-replace表达式来实现的终极灵活性。
用例是,我想让我的鼠标滚动事件被传递给一个简单的程序,比如less pager,这意味着我的工具(在PTY上产生less )将做一些事情,比如发出代码\x1b[?1000h来打开鼠标报告,然后随后将此后接收到的每个鼠标滚轮转义代码转换为\x1b[A向上箭头代码(最后几个字符编码鼠标在终端中的位置,应该忽略,但也要去掉)。
正如您所看到的,能够指定一个在stdin终端读取流上工作的正则表达式,以生成转换后的流并发送到从pty,这将是理想的。
我需要等待Perl 6才能实现这一点吗?为什么正则表达式引擎通常需要整个字符串都可用,这肯定有特殊的原因?
很明显,在这里我不需要regex的强大功能。例如,我可以推测,可能的情况是支持回溯使得不可能对正则表达式进行流解析。
因此,由于我不需要回溯,也许有一些轻量级的正则表达式引擎可以提供流API。只是看起来利用某种形式的解析系统(如果有合适的)要比构建一些随意的东西更聪明。
发布于 2013-04-20 11:22:34
看起来s2p是我可以使用的一个例子。
特别是,能够将$|设置为不进行行缓冲的可能性。
实际上,我不认为这是可行的。它似乎是围绕行构建的,并使用s操作符来运行正则表达式。
https://stackoverflow.com/questions/16114749
复制相似问题