计算机是否可以通过用户提供的示例“学习”正则表达式?
为了澄清:
- 我不想学习正则表达式。
- 我希望创建一个程序,该程序可以通过用户交互提供的示例“学习”正则表达式,也许是通过从文本中选择部分内容或选择开始或结束标记。
这有可能实现吗?是否存在我可以用来在 Google 上搜索的算法、关键字等?
编辑:感谢你们的回答,但我对提供此功能的工具不感兴趣。我正在寻找理论信息,例如论文、教程、源代码、算法名称,以便我自己创建一些东西。
回答:
书籍计算学习理论导论包含一种学习有限自动机的算法。由于每个正则语言都等价于一个有限自动机,因此程序可以学习一些正则表达式。@人名和@人名展示了一些无法学习有限自动机的情况。一个相关的问题是学习隐马尔可夫模型,这是一种可以描述字符序列的概率自动机。请注意,编程语言中使用的大多数现代“正则表达式”实际上比正则语言更强大,因此有时更难学习。