【问题标题】:Is this description of alternatives in regexes wrong?正则表达式中替代项的描述是否错误?
【发布时间】:2011-05-06 03:28:23
【问题描述】:

PEG 上的维基百科文章指出:

两者的根本区别 上下文无关语法和解析 表达式语法是 PEG 的 选择运算符是有序的。如果 第一个选择成功,第二个 替代被忽略。如此下令 选择不是可交换的,不像 与上下文无关的无序选择 语法和正则表达式。

但是this question 发现如果替代项是彼此的子串;那么正则表达式的行为不符合unordered choice。 wiki 在大多数情况下是正确的,但没有处理这种边缘条件。我的评估是否正确?

【问题讨论】:

    标签: python regex peg


    【解决方案1】:

    "正则表达式" != "正则表达式"。后者纯粹而简单,只有理论计算机科学家和符号数学家才会感兴趣。

    “有序选择”是正则表达式处理器的一个实现选项。

    您说“如果替代项是彼此的子字符串;那么正则表达式不会根据无序选择行事”。

    更正确的说法是“一些正则表达式处理器对所有替换使用有序选择。当替换是另一个的前缀时,这会变得很明显。”

    【讨论】:

    • 你所谓的“正则表达式”通常被称为正则表达式,我认为它也是正确的(例如JavaDoc of the Java class Pattern 声称它是“正则表达式的编译表示”。 )。然而,确实有两个相关但独立的事物在起作用:纯数学正则表达式和“现实世界”计算正则表达式。它们基于相同的理论,但等效。
    • 好的。我不知道他们是不同的。我正在处理具有“正则表达式 HOWTO”的 python 文档。
    • 当“正则表达式”与“上下文无关文法”和“解析表达式文法”相提并论时,指的是纯粹简单的正则表达式。
    猜你喜欢
    • 1970-01-01
    • 2016-09-28
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多