你可以用正则表达式来实现shunting yard algorithm吗?你可以使用正则表达式来实现分流算法吗?
回答
我相信这已经在这里找到答案:Can the shunting yard algorithm parse POSIX regular expressions?
我会说,回答你的问题是“没有,你可以使用正则表达式不 实现调度场算法。” 这与您使用 正则表达式无法解析任意HTML的原因相同。归结为:
正则表达式没有堆栈。由于分流场 算法依赖于堆栈(在将中间转换为RPN时将推进和弹出操作数),则正则表达式不具有执行此任务的计算“能力”。
这掩盖了很多细节,而是一个“正则表达式”是一种方式 定义正规语言。当你“使用”正则表达式,你 问电脑说:“看文本的身体,告诉我 任何这些字符串的是否是我的语言,我使用的是常规定义的语言 表达。”我将通过常规语言指向this most excellent answer which you and everyone reading this should upvote 了解更多信息。
所以,现在你需要一些数学概念,以创造更强大的语言,以增加“定期 语言”。如果您将 描述为分流码算法作为计算能力模型 的实现,那么您可能会说该算法将是 ,如context-free grammar(嗨,您知道什么, 链接使用表达式分析树作为例子。)A push-down automata。与堆栈的东西。
如果您不熟悉自动机理论和复杂性 类,那么这些维基百科文章可能没有帮助 而没有从头开始解释它们。
问题的关键是,你可以使用正则表达式来帮忙写分流 院子。但是,正则表达式在执行具有 任意深度的操作时并不是很好,这个问题就是这样。所以我不会花太多时间去解决这个问题的正则表达式。
我不这么认为。正则表达式只能匹配常规语言(请参阅Regular language),而中缀表达式则是一种上下文无关语言(请参阅Context-free language)。例如,您无法将正确匹配的括号与正则表达式匹配。
- 1. 你可以在CSS img [alt = *]中使用正则表达式吗?
- 2. 扩展正则表达式实现可以解析HTML吗?
- 3. 正则表达式实现
- 4. 你可以改进这个C#正则表达式代码吗?
- 5. 正则表达式算法
- 6. 你可以使用preg_replace正则表达式与“不”条件?
- 7. 这个函数的逆可以用正则表达式来计算吗?
- 8. 我可以在datetime.strptime格式内使用正则表达式吗?
- 9. 你可以使用字典(文本)正则表达式标记化吗?
- 10. 正则表达式可以用作输入法吗?
- 11. 正则表达式可以用来表达各种词法分析器的要求吗?
- 12. 我可以使用XPath表达式中的正则表达式
- 13. 正则表达式可以使用不同的语言吗?
- 14. 我可以使用正则表达式吗?
- 15. 我们可以在web.xml中使用正则表达式吗?
- 16. 我可以在C#中使用String.Replace的正则表达式吗?
- 17. PL/SQL函数中可以使用正则表达式吗?
- 18. 我可以在正则表达式中使用求和吗?
- 19. 我可以使用正则表达式的字符编码吗?
- 20. 在HTML解析中可以使用正则表达式吗?
- 21. 你可以在正则表达式中放置一个列表成员的实例来匹配python吗?
- 22. 流浪了使用正则表达式
- 23. 正则表达式将算术表达式分解成部分
- 24. 你能使用正则表达式让我*出aaa。*。domain.com吗?
- 25. 我可以使用Perl正则表达式来匹配平衡文本吗?
- 26. 我可以使用正则表达式来查找X的索引吗?
- 27. 您可以使用单个正则表达式来解析函数参数吗?
- 28. 你可以做一个用轨道正则表达式查找的地方吗?
- 29. Selenium Webdriver + Ruby正则表达式:我可以用find_element使用正则表达式吗?
- 30. 我可以使用正则表达式作为String.split()的分隔符吗?
出于好奇,这事你真正想做的事或者是更多的学术好奇心? – shuttle87 2012-02-15 17:24:22
这是一个致敬问题http://stackoverflow.com/questions/4161553/can-the-shunting-yard-algorithm-parse-posix-regular-expressions/4161681#4161681 – 2012-02-16 07:24:12