java - 是否有任何用 Java 编写的正则表达式优化器?

标签 java regex

我编写了一个 Java 程序,它可以生成一系列符号,例如 "abcdbcdefbcdbcdefg"。我需要的是 Regex 优化器,它可以生成 "a((bcd){2}ef){2}g"

由于输入可能包含 unicode,如 "a\u0063\u0063\bbd",我更喜欢 Java 版本。

我想要一个“更短”的表达式的原因是为了节省空间/内存。这里的符号序列可能很长。

一般来说,要找到“最短”的优化正则表达式很困难。所以,在这里,我不需要保证“最短”标准的那些。

最佳答案

我有一种讨厌的感觉,即创建与给定输入字符串或字符串集匹配的最短正则表达式的问题在计算上会“困难”。 (与计算 Kolmogorov Complexity 的问题有相似之处……)

还值得注意的是,就匹配速度而言,abcdbcdefbcdbcdefg 的最佳正则表达式很可能是 abcdbcdefbcdbcdefg。添加重复组可能会使正则表达式字符串更短,但不会使正则表达式更快。事实上,除非正则表达式引擎展开重复组,否则它可能会更慢。

The reason that I need this is due to the space/memory limits.

您是否有明确的证据表明您需要这样做?

我怀疑这样做不会节省大量空间……除非输入字符串真的很长。 (如果它们很长,那么使用常规文本压缩算法来压缩字符串会获得更好的结果。)

关于java - 是否有任何用 Java 编写的正则表达式优化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11927395/

相关文章:

java - 如何解释引用命名空间 java : on a non-java client? 的 WSDL

regex - 在 "aa67bc54c9"中,是否可以使用正则表达式打印 "aa"67次, "bc"54次等等?

java拆分函数

java - 如何从存储库 Web 脚本以编程方式创建 Alfresco 站点?

python - python中的正则表达式用句点代替由整数界定的逗号

python - 模式后面不再有数字正则表达式 python

regex - 正则表达式匹配确切数量的字符?

java - JDBC数据库访问、插入元组

java - 将 List<Object> 转换为列表字符串

java - 无法使用通配符泛型向 Java 集合添加值