pou*_*def -1
我会说你的问题的答案是“不,你不能使用正则表达式来实现调车场算法”。这与您无法使用正则表达式解析任意 HTML 的原因相同。归结起来就是:
正则表达式没有堆栈。由于调车场算法依赖于堆栈(在从中缀转换为 RPN 时压入和弹出操作数),因此正则表达式不具备执行此任务的计算“能力”。
这掩盖了许多细节,但“正则表达式”是定义正则语言的一种方法。当您“使用”正则表达式时,您是在要求计算机说:“查看文本正文并告诉我这些字符串中的任何一个是否属于我的语言。我使用正则表达式定义的语言。” 我将指出这个最优秀的答案,您和阅读本文的每个人都应该为更多有关常规语言的内容点赞。
因此,现在您需要一些数学概念来增强“常规语言”,以便创建更强大的语言。如果您将调车场算法描述为计算能力模型的实现,那么您可能会说该算法将被描述为上下文无关语法(嘿,您知道什么,该链接使用表达式解析树作为一个例子。)下推自动机。有堆栈的东西。
如果您不太熟悉自动机理论和复杂性类别,那么如果不从头开始解释这些维基百科文章可能没有多大帮助。
重点是,您也许可以使用正则表达式来帮助编写调车场。但正则表达式不太擅长执行任意深度的操作,而这个问题正是如此。所以我不会花太多时间去解决这个问题的正则表达式。
| 归档时间: |
|
| 查看次数: |
1110 次 |
| 最近记录: |