【发布时间】:2015-08-20 15:53:43
【问题描述】:
我想知道在哪里可以从 Java 中的自然语言创建正则表达式。为了解释这一点,让我举一个用例。
支持我要检查以下字符串的格式是否正确。
"aaaa-bbbb-cccc"
本例中有效字符串的业务定义如下:
4 letters, then hyphen, then 4 letters, then hyphen, then 4 letters.
实现这一点的常用方法是从业务中获取需求并相应地编写正则表达式。但我很想知道是否有任何库可用于从自然语言创建正则表达式。这样我们就可以要求企业以他们也能理解的方式提供格式。
【问题讨论】:
-
您可能想使用编译器编译器,如 ANTLR、YACC 等。这将为您提供更大的灵活性。
-
您可以通过构建器模式实现一个相对简单的 DSL
-
一般来说,提供一种“自然语言”的方式来编写任何严格的规范是一个非常非常困难的问题。人们已经就这些主题撰写了博士论文。
-
其实不是。自然语言没有顺序。即使某些东西具有较小的可重复性,也几乎不可能获得可用的机器创建的正则表达式。并且正则表达式结构本身是有限的,通常是复杂的非正则表达式算法的基础。
-
如果您让业务人员编写这些内容,您将无法让他们遵守某些严格的语法,即使该语法比正则表达式简单得多并且更像自然语言。指定与您的示例相同的内容的有效定义可能是“应该是三组,每组四个字母,用破折号分隔”