我正在寻找在Streams上应用正则表达式的快速而安全的方法.
我在互联网上找到了一些关于将每个缓冲区转换为String然后应用于Regex
字符串的示例.
这种方法有两个问题:
Regex
Streams ,肯定可以避免.Regex
支持:Regex
模式有时只有在将两个缓冲区组合在一起时才能匹配(缓冲区1以匹配的第一部分结束,缓冲区2以匹配的第二部分开始).转换为字符串的方式无法原生地处理这种类型的匹配,我必须提供更多信息,例如模式可以匹配的最大长度,这根本不支持+和*正则表达式标志,并且永远不会支持(无限制匹配)长度).因此,转换为字符串的方式并不快,并且不完全支持Regex
.
是否有任何方法/库可用于Regex
在Streams 上应用而无需转换为字符串并具有完整的Regex支持?
我寻找一个将正则表达式应用于Java I/O流的示例,该流不会简单地将流转换为字符串,因为我希望保留二进制数据.互联网上的大多数例子都集中在文本数据上......
是否可以使用基于DFA的正则表达式实现捕获组,同时保持相对于输入长度的线性时间复杂度?
直觉上我想不是,因为子集构造过程不知道它可能落入哪个捕获组,但这是我第一次意识到这可能是一个潜在的问题,所以我不知道.