为什么重复的字符串如 [wcw | w是a和b的字符串] 不能用正则表达式表示? 给我详细的答案,因为我是词汇分析的新手。 谢谢...正则表达式词法分析
2
A
回答
5
正则表达式描述正规语言/语法。那些不能包含嵌套结构的语言可以用简单的有限状态机来描述。简化后,您可以看到,语言中的每个词都严格按照从左到右(或从右到左)的方向生长,其中重复结构必须明确定义并且是静态的。
这意味着,没有从先前的状态信息任何可以(在输入进一步几个字符)结转以后的状态。所以如果你有你的符号w你不能指定输入必须具有完全相同的字符串w后面的序列。同样,你不能保证每个开口paranthesis需要closin括号以及(所以正则表达式本身,甚至没有一个正规的语言,因此无法用正则表达式:-)描述)。
在我们有非常严格的一套regex操作符的工作理论计算机科学,基本上只包括序列,替代(|)和重复(*),其他的一切可以用这些操作进行说明。
然而,通常正则表达式引擎允许的某些子图案分组为随后可被引用的或以后提取匹配。一些引擎甚至允许在搜索表达式字符串本身中使用这样的反向引用,从而允许表达式不仅仅描述常规语言。如果我没有记错的话,这种反向引用的使用甚至可以产生没有上下文的语言。
其他指针:
2
它可以,你不能保证它的相同串的“一个” S和“b”是因为没有办法保留在遍历上半年获得的信息用于遍历第二个。在他们的原始形式
相关问题
- 1. 分词正则表达式
- 2. 如何使用正则表达式(词法分析)表达类似cpp的字符串(词法分析)
- 3. 在词法分析器中的条件正则表达式
- 4. 在莱克斯正则表达式(词法分析器)
- 5. FLEX(词法分析器)正则表达式 - 重用定义
- 6. 正则表达式解析长词
- 7. 用正则表达式分析和弦
- 8. 正则表达式的SQL分析
- 9. 正则表达式分析的问题
- 10. Python正则表达式分析变量
- 11. 正则表达式的表达式分析在C#中
- 12. Haskell中的正则表达式与词法分析器的比较
- 13. Python正则表达式查找单词与其他词分开
- 14. Java正则表达式拆分方法
- 15. C#正则表达式分割和正则表达式
- 16. 正则表达式:替换部分正则表达式匹配
- 17. 正则表达式(正则表达式)
- 18. 正则表达式(正则表达式)
- 19. 正则表达式拆分(...,...)
- 20. 分组正则表达式
- 21. 正则表达式拆分
- 22. 正则表达式细分
- 23. 正则表达式分组
- 24. 拆分正则表达式
- 25. 正则表达式分组
- 26. 拆分正则表达式
- 27. 分割的正则表达式 - 将单词拆分为词素或词缀
- 28. 红宝石/正则表达式语法分析字符串
- 29. 使用与正则表达式拆分分析模式
- 30. 单词正则表达式红宝石
记住,解析是我参加了研究生院(编译I)最难的课程之一的主要议题。已经有相当不错的答案,但您可能没有背景可以使用它。 – 2009-03-05 20:54:47
好吧,这并不容易。但有时候,至少它很有趣。尽管这里包括了优化以及超越解析的几种算法。 任何想法如何使这个帖子更清楚的人没有太多的背景? - 。 - – Joey 2009-03-05 21:43:10