【发布时间】:2020-02-20 03:55:01
【问题描述】:
我正在从 SocketChannel 加载大型 UTF-8 文本,并且需要提取一些值。使用 java.util.regex 进行模式匹配非常适合,但使用 CharBuffer cb = UTF_8.decode(buffer); 解码为 Java 的 UTF-16 会复制此缓冲区,使用双倍空间。
有没有办法在 UTF-8 中创建 CharBuffer“视图”,或者以其他方式与字符集进行模式匹配?
【问题讨论】:
-
您的正则表达式是否包含 unicode?如果不是,您可以将测试视为 ASCII 并稍后将提取的片段重新解码为 UTF-8
-
是的,正则表达式都是 ascii。能给我举个例子吗?假设 ByteBuffer b 是 UTF-8 "hello alexey",而 Pattern 是 Pattern.compile("hello (?
.*)")
标签: java regex performance utf-8 character-encoding